我有一個代碼,其中我#include<linux/videodev2.h>
。有三個文件:在包含頭文件中的差異.cpp和.h
一個頭文件 - 包括:
stdint.h
和stdlib.h
。定義了幾個函數,一個struct,比如說abc和一些#define宏。其中一個功能是一個有很多方法,包括在.h文件的功能定義int func(int, uint32_t, size_t, abc*);
一個CPP文件。
一個main.cpp,它有main()函數調用.h文件中的方法(下面的完整文件)。此文件僅用於測試目的。
#include "head.h" int main() { func(5, (uint32_t)5, (size_t)5, 0); return 0; }
什麼是看到的是一個奇怪的情況:
- 如果我有
linux/videodev2.h
只在.h文件中,uint32_t
並在此頭文件中定義其他的事情不能由.cpp文件訪問。 (我得到的錯誤是:uint32_t was not declared in this scope
和uint32_t does not name a type
等等)。即使.h文件的第一行是#include<linux/videodev2.h>
- 如果我在兩個cpp文件中都包含videodev2頭文件,那麼它的工作原理只有如果我在.h文件之前導入它(videodev2)。
- 如果在main.cpp文件中使用
func(5, (uint32_t)5, (size_t)5, (abc*)0);
,我得到的錯誤是abc未在此範圍內聲明。
我使用的命令編譯:g++ main.cpp head.cpp
我無法弄清楚這是爲什麼。我想在.h文件中包含videodev2頭文件,因爲幾乎可以確定使用.h文件的代碼將依賴於它。但似乎將它包含在.h文件中根本沒有任何作用。
我在這裏必須誠實。這是我必須轉換爲C++的C代碼。我知道我不符合最佳做法和標準。但爲什麼會出現這種行爲?
我不知道它是什麼,但我把這三個文件移動到一個新的目錄。它完美地編譯。舊目錄中有很多文件。你們有沒有任何建議,爲什麼其他文件的存在會影響到這一點? – Deepanshu