在我工作的makefile中,gcc與-D XOPEN_SOURCE=500 and -D_BSD_SOURCE
選項一起使用。 gcc --help
不告訴我這些是什麼;快速谷歌搜索也沒有幫助。我是一個gcc的新手,有人能給我一個提示嗎?那些gcc選項在做什麼?
0
A
回答
4
按照GCC文檔("3.11 Options Controlling the Preprocessor")時,-D
開關定義了宏XOPEN_SOURCE
和_BSD_SOURCE
與值分別500
和1
。就好像你在所有的源文件的開頭這段代碼傳遞給GCC:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
構建腳本通常採取的編譯器,以「插入」宏像這些以「溝通」爲源能力優勢關於目標平臺的代碼細節(例如操作系統版本)。
-D
的「反向」命令行開關是-U
,其中#undef
是宏。
大多數(如果不是全部的話)現代C/C++編譯器包含類似的開關。例如,Visual C++編譯器接受/D
compiler switch,這基本上與GCC的-D
交換機具有相同的用途。
以供將來參考,the GCC option index是偉大的,如果你需要查看編譯器開關的GCC編譯器。
1
-D
設定了一個定義。這就像添加包含頭文件:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
然後可以使用#ifdef _BSD_SOURCE
,使代碼的某些部分的條件編譯。
2
-D
用於設置定義。您正在編譯的源代碼很可能是使用這些定義來包含特定的頭文件。
的-D
想象的那樣做同樣的事情:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE 1
它正在編譯文件的頂部。
1
這些對於gcc來說並不算什麼。這些都是在你的.c,或的.cpp .h文件像類似的定義您有:
#define XOPEN_SOURCE 500
#define _BSD_SOURCE
1
-D
是equlivant的#define
即
#define XOPEN_SOURCE 500
相關問題
- 1. GCC中的-c選項做什麼
- 2. gcc開關 - 這些做什麼?
- 3. 什麼做在gcc /鐺編譯器選項-f和-m代表
- 4. gcc -O2對遞歸斐波那契函數做什麼?
- 5. MinGW gcc什麼都不做
- 6. gcc優化:-O0做什麼?
- 7. 「gcc -xW」是做什麼的?
- 8. gcc中的ffreestanding選項是什麼?
- 9. 爲什麼gcc有一個-include選項?
- 10. gcc中的-o選項是什麼?
- 11. 如果body class等於X,那麼做些什麼?
- 12. 想從列表中選擇選項時做些什麼(列表首選項)
- 13. create_additions選項在JSON.parse中做了什麼?
- 14. %ud,%vud那些是什麼
- 15. 在SceneKit中做些什麼
- 16. 在python中做些什麼?
- 17. 在R中做些什麼?
- 18. {}在C中做些什麼
- 19. 使用鼠標滾輪選項卡時要做些什麼?
- 20. 那麼函數SDL_FreeSurface是做什麼的?
- 21. 什麼PHP擴展是首選?那麼安全首選項呢?
- 22. gcc是什麼使進程在做什麼?
- 23. gcc用我的堆棧做什麼?
- 24. GCC的「-wrapper」標誌是做什麼的?
- 25. Cygwin GCC + WinXP cmd.exe什麼都不做
- 26. Node.js express-session代理選項做什麼?
- 27. jquery選項卡 - 我做錯了什麼?
- 28. jvm選項-XX:OnOutOfMemoryError = jmap是做什麼的?
- 29. java選項-XX:-EliminateAllocations做了什麼?
- 30. 什麼是T-SQL語法如果這或那麼那還有什麼不做?
謝謝您的回答,但我在GCC選項索引中找不到-D選項? – mort
@mort:選項索引按字母順序排列,並且各個開關沒有短劃線(s)。所以你會在「current_version」之後和「d」之前找到「D」。你只需要看起來更難。 :-) –