今天在跑項目的時候遇到這么個問題,在添加api宏定義的時候,不加顯示無法識別的外部錯誤,加了顯示找不到文件。反正就是怎么都是錯的,但是我檢查了CmakeLists、模塊所在文件夾、項目路徑都是沒有問題的。非常奇怪。
然后就開始嘗試各種可能的錯誤,最后死馬當活馬醫的改了一下頭文件引入符號,把引入<xxxapi.h>文件改成了"xxxapi.h",哎奇了個怪了,就跑通了。明明<>的搜索范圍是包含了""的,咱也不知道為什么就是不行,只能說編碼規范問題,多注意吧。
正好乘此機會,總結一下<>和""的區別,給自己提個醒。
一、“ <> ”的作用
<>:通常用于引用標準庫頭文件或系統提供的庫頭文件。編譯器會在標準系統路徑下搜索這些頭文件。
敲重點,編譯器會在標準系統路徑下搜索這些頭文件。
示例
#include <iostream> // 引用標準庫頭文件
#include <QtCore/QDebug> // 引用 Qt 核心模塊的頭文件
?二、‘ "" ’的作用
"":通常用于引用自定義或項目特定的頭文件。編譯器會首先在當前項目目錄下搜索這些頭文件,然后再搜索系統路徑。
敲重點,編譯器會首先在當前項目目錄下搜索這些頭文件。
示例
#include "mycustomclass.h" // 引用項目中自定義的頭文件
明確了二者的搜索范圍,我們就清楚了最開始的問題:?
對于自定義的頭文件,理論上來說,使用<>也應該能夠找到頭文件,前提是需要將自定義頭文件放在編譯器能夠搜索到的標準系統路徑下。但通常情況下,我們更傾向于使用""來包含自定義的頭文件,因為這樣更直觀和方便。?
如果自定義頭文件放在了系統標準路徑下,使用 < > 是可以找到的。但如果頭文件放在項目目錄下或其他非系統路徑下,使用 " " 是更好的選擇,因為這樣可以明確告訴編譯器去當前項目目錄下搜索。
而實際操作上也看到了,說是可以找到,但是我就沒有找到。所以大家還是按編碼規范來最好!
奇怪的知識又增加了!?
都看到這里了,點個贊再走唄朋友~
加油吧,預祝大家變得更強!
點贊!點贊!點贊!