为什么cpp引入头文件时不写.h报错?

为什么cpp引入头文件时不写.h报错?,第1张

C++ 不需要在引入头文件时写 ".h",它是通过后缀名的扩展名自动确定的。在 C++ 中,头文件的扩展名一般是 ".hpp" 或者 ".h",但是对于大多数标准库和第三方库,扩展名都是 ".hpp"。因此,如果遇到错误,那么一个常见的原因是文件名写错了,或者是文件所在的目录没有被正确添加到搜索路径中。你可以在代码中使用下面的语法来引入头文件:

c

Copy code

#include <header_file_name>

或者:

c

Copy code

#include "header_file_name"

如果是用后者,那么编译器将在当前目录下搜索该文件。如果文件不存在,那么会报错。因此,如果你想要引入标准库中的头文件,那么推荐使用前者的语法。

在Xcode Build System设置中,有Header Search Path、System Header Search Path、User Header Search Path这几种方式,区别在于:

上述三种方式是基本的文件引用方式,一个项目那么多文件,用这些引用路径遍历查找肯定是很低效的,所以Xcode会优先使用Header Map来提高头文件索引速度。

当我们开启 Build Setting 中的 Use Header Map 选项后,会自动生成的一份头文件名和头文件路径的映射表,而这个映射表就是 hmap 文件,不过它是一种二进制格式的文件,也有人叫它为 Header Map。

还有一种头文件搜索机制,它是基于 Framework 这种文件结构进行的。

当拖入一个.framework文件进入工程,自动会在Framework Search Path配置上该文件路径。

这里着重讲一下Framework打包时,Public、Private、Project的区别:

https://blog.csdn.net/MeituanTech/article/details/114109300?spm=1001.2014.3001.5502

新增Android.bp文件

在新增的libs文件夹下加入Android.bp文件,新增如下内容

java_import {

name: "testlib_jar",

jars: ["libs/testlib.jar"],

修改模块中的Android.bp

需要在android_app的主模块中新增上面定义的name的值

android_app {

name: “xxx”,

static_libs: [

“testlib_jar”,

],

如果不想在libs文件夹新增Android.bp文件,可以把java_import放入到Android.bp中

修改diff文件如下:

@@ -23,6 +23,16 @@ java_library {

type: "nano",

},

}

+//prebuilt testlib.jar

+java_import {

+name: "testlib_jar",

+jars: ["libs/testlib.jar"],

+}

java_library {

@@ -63,7 +63,9 @@ android_library {

"dagger2-2.19",

-"jsr330"

+"jsr330",

+"testlib_jar",

],

manifest: "AndroidManif

如果是新增so方法,类似:

@@ -199,8 +199,11 @@ android_app {

+jni_libs: [

+"libjni_test_api


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/6043283.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-12
下一篇 2023-03-12

发表评论

登录后才能评论

评论列表(0条)

保存