今天在跑项目的时候遇到这么个问题,在添加api宏定义的时候,不加显示无法识别的外部错误,加了显示找不到文件。反正就是怎么都是错的,但是我检查了CmakeLists、模块所在文件夹、项目路径都是没有问题的。非常奇怪。
然后就开始尝试各种可能的错误,最后死马当活马医的改了一下头文件引入符号,把引入<xxxapi.h>文件改成了"xxxapi.h",哎奇了个怪了,就跑通了。明明<>的搜索范围是包含了""的,咱也不知道为什么就是不行,只能说编码规范问题,多注意吧。
正好乘此机会,总结一下<>和""的区别,给自己提个醒。
一、“ <> ”的作用
<>:通常用于引用标准库头文件或系统提供的库头文件。编译器会在标准系统路径下搜索这些头文件。
敲重点,编译器会在标准系统路径下搜索这些头文件。
示例
#include <iostream> // 引用标准库头文件
#include <QtCore/QDebug> // 引用 Qt 核心模块的头文件
二、‘ "" ’的作用
"":通常用于引用自定义或项目特定的头文件。编译器会首先在当前项目目录下搜索这些头文件,然后再搜索系统路径。
敲重点,编译器会首先在当前项目目录下搜索这些头文件。
示例
#include "mycustomclass.h" // 引用项目中自定义的头文件
明确了二者的搜索范围,我们就清楚了最开始的问题:
对于自定义的头文件,理论上来说,使用<>也应该能够找到头文件,前提是需要将自定义头文件放在编译器能够搜索到的标准系统路径下。但通常情况下,我们更倾向于使用""来包含自定义的头文件,因为这样更直观和方便。
如果自定义头文件放在了系统标准路径下,使用 < > 是可以找到的。但如果头文件放在项目目录下或其他非系统路径下,使用 " " 是更好的选择,因为这样可以明确告诉编译器去当前项目目录下搜索。
而实际操作上也看到了,说是可以找到,但是我就没有找到。所以大家还是按编码规范来最好!
奇怪的知识又增加了!
都看到这里了,点个赞再走呗朋友~
加油吧,预祝大家变得更强!
点赞!点赞!点赞!