預處理器指令#if
與正常if
之間的區別C?我是C的新手。預處理器指令#if與正常之間的區別
回答
#前面的語句被稱爲預處理器指令。在代碼實際編譯之前,它們由解析器處理。從使用Google的第一次搜索結果中找到:
預處理指令是包含在我們程序代碼中的行,它們不是程序語句,而是指令爲預處理器。這些行總是以散列符號(#)開頭。預處理器在實際編譯代碼開始之前執行,因此預處理器在任何代碼由語句生成之前將所有這些指令摘要。
因此,#if將在編譯時決定,「正常」如果將在運行時決定。換句話說,
#define TEST 1
#if TEST
printf("%d", TEST);
#endif
將編譯爲
printf("%d", 1);
相反,如果你寫
#define TEST 1
if(TEST)
printf("%d", TEST);
該計劃實際上將編譯宏作爲
if(1)
printf("%d", 1);
所以我們可以使用我們想要的任何東西? – kevin 2011-03-03 03:17:16
@kevin編號具體'int x = 1; #if X == 1'根本不起作用。 – 2011-03-03 03:30:25
預處理器if
允許您在將代碼發送到編譯器之前對其進行調整。通常用於停止兩次添加標題代碼。
編輯,你的意思是C++,因爲它被標記爲這樣嗎? http://www.learncpp.com/cpp-tutorial/110-a-first-look-at-the-preprocessor/
停止添加兩次頭文件代碼對於預處理程序來說是非常有限甚至是深奧的使用...幾乎「不正常」。 – 2011-03-03 06:00:29
@Jim Balter根據原始問題,凱文和其他人可能會發現這些答案可能首先在代碼中看到它作爲標頭警衛... – Zak 2011-03-03 06:25:23
這沒有任何理由。事實上,從原始問題來看,這是極不可能的。 – 2011-03-03 20:26:59
預處理器if作爲正在編譯的程序的第一步由預處理器處理。正常if在程序執行時在運行時處理。預處理器指令用於啓用條件編譯,根據不同的定義預處理器常量/表達式使用代碼的不同部分。正常if用於控制正在執行的程序中的流程。
預處理指令檢查或在o其他詞,#定義指令,並且在定義的情況下替換定義。因此只檢查宏變量。這是在預處理階段執行的。
正常如果或控制流標記如果檢查與變量或函數返回值的條件。該檢查在執行期間完成。
- 1. 預處理器指令之間的區別#if和#ifdef
- 2. 預處理器指令#error和#warning之間的區別
- 3. 預處理器指令和庫之間的區別
- 4. 指令控制器和正常控制器之間的區別
- 5. #if /#endif預處理指令
- 6. 多核處理器之間的區別
- 7. 存儲過程與預處理語句之間的區別?
- 8. C#預處理器指令
- 9. Gfortran預處理器指令
- 10. VB.NET預處理器指令
- 11. DDK預處理器指令
- 12. GNU Make中的ifeq指令和if函數之間的區別
- 13. 預處理器指令定義的功能宏與多個if/else if語句
- 14. 多處理器與多核心之間的區別
- 15. 機器可處理和機器可理解之間的區別
- 16. #if和#ifdef Objective-C預處理器宏有什麼區別?
- 17. #if和if子句之間的區別?
- 18. 使用預處理器指令在Visual Studio中調試WindowsService #if
- 19. clBuildProgram的多個預處理器指令
- 20. nuget庫中的預處理器指令
- 21. xib中的預處理器指令?
- 22. 檢測iPad的預處理器指令
- 23. XTEXT:預處理器指令的規則
- 24. 命令與ScriptBlock之間的區別Powershell
- 25. 如何區分預處理器和編譯器指令?
- 26. XML中的「處理指令」和「聲明性聲明」之間有什麼區別?
- 27. 指令與模板之間的區別與沒有模板和Angular 1.2和1.1之間的區別?
- 28. 指令級並行與並行處理的區別
- 29. 指針之間的區別
- 30. 指令中孩子與孤立範圍之間的區別
你問預處理器做什麼?你問它是如何工作的?你真的在問什麼? – 2011-03-03 02:44:19
我想知道預處理器是怎麼做的! – kevin 2011-03-03 02:52:59
請不要喊,請問語法問題。我不知道「預處理器的工作原理」是什麼意思 - 它當然不清楚S.Lott的哪一種替代品是用來識別的。 – 2011-03-03 06:02:13