如果我告訴C預處理器#include一個文件並使用CPPFLAGS來幫助找到所需的文件,那麼該文件已包含在內,對嗎?如果有的話,什麼是使用CFLAGS告訴C編譯器關於相同的include目錄?C預處理器與C編譯器
回答
我不認爲有任何用處。
implicit make rules表示CFLAGS
僅在編譯C程序(從.c到.o)時使用。編譯器命令行中還添加了值CPPFLAGS
。
CPPFLAGS
也用於以下規則:
- 編譯的C++程序
- 編譯Fortran和RATFOR方案
- 預處理Fortran和RATFOR方案
- 組裝和預處理彙編程序
- 製作來自C,Yacc或Lex程序的Lint Libraries
由於CPPFLAGS
在使用CFLAGS
每一種情況下被使用,似乎沒有任何意義添加-I
指令來CFLAGS
那些已經在CPPFLAGS
。
當然,如果你的Makefile有自定義規則,通過CFLAGS
到編譯器,但是省略CPPFLAGS
,這是一個不同的故事。
順序雖然有所作爲,但至少對於GNU的默認規則來說,CLFAGS被添加到CPPFLAGS之後,所以你不能用它來改變兩個目錄的相對順序(注意,如果你依賴它,那你已經是在緊張的情況下)。 – AProgrammer 2010-05-03 09:12:25
謝謝你的幫助。我想我剩下的是C編譯器用include路徑本身所做的事情。現在說,編譯器不**看到CPPFLAGS。在那種情況下,它是否會在不知道所需的包含路徑的情況下進行排放爲什麼?就我所見,預處理器已經解決了路徑幷包含了所需的包含文件。 – Sunny209 2010-05-03 19:34:27
是的,但大部分時間,'cc'程序都會預處理*和*編譯。沒有單獨的程序。 – Thomas 2010-05-03 20:19:20
- 1. C++「編譯器」與預處理
- 2. C#編譯器:預處理只有
- 3. C++預處理器
- 4. 編譯器如何處理`(c = getchar())!= EOF`?
- 5. 預處理器錯誤C++
- 6. C++,預處理器語句
- 7. C預處理器宏
- 8. C++定義預處理器
- 9. C#預處理器指令
- 10. C++預處理器定義
- 11. C預處理器概念
- 12. C++預處理器變量
- 13. 調試C++預處理器
- 14. 舍入C預處理器
- 15. 推送C++預處理器
- 16. C代碼預處理器
- 17. C預處理器Mac OS
- 18. C++預處理器__typeof
- 19. 預處理器基於C
- 20. C預處理器警衛?
- 21. C++ #define預處理器
- 22. 反編譯Objective-C預處理器語句
- 23. Golang預處理器像C風格的編譯開關
- 24. 使用C預處理器指令編譯時間檢查
- 25. C++模板和C預處理器
- 26. C預處理器:#define in C ...諮詢
- 27. C,Objective-C的預處理器輸出
- 28. OpenCL編譯器預處理定義?
- 29. c中的翻譯器和預處理器是否一樣?
- 30. C++與2個編譯器
@Duracell:不,那是'CXXFLAGS'。 'CPPFLAGS'用於C預處理器。 – Thomas 2010-05-03 06:53:40
@Thoams您所做的澄清很重要。對CPPFLAGS與CXXFLAGS有許多誤導性提及。 – Barry 2012-05-23 18:13:22