#define TML_ID
- 沒有值分配給TML_ID。編譯或構建可執行文件沒有問題。這是否會將任何默認值(如null)分配給TML_ID或將TML_ID視爲未定義?如果#define在沒有賦值的情況下使用,它會做什麼?
0
A
回答
4
0
0
沒有分配一個值,以這種方式的宏通常用於防止包括相同h文件多次,這樣:
#ifndef _FILENAME
#define _FILENAME
//declaration code
#endif
如果某些cpp文件包括,例如,兩個不同的.h文件,它們都包含我們的.h文件,那麼.cpp將只有一個聲明代碼副本,因爲第二次_FILENAME宏將被定義,並且聲明代碼將被跳過。
+0
以下劃線開頭並以大寫字母('_FILENAME')開頭的名稱和包含兩個連續下劃線的名稱保留供實施使用。不要在你的代碼中使用它們。 –
0
#define MACRO
定義了一個名爲MACRO的宏。它沒有內容,所以如果你寫了類似std::cout << MACRO
的東西,你會得到一個錯誤,因爲那裏什麼都沒有。這通常用於有條件地使用新的關鍵字:
#if CPP_VERSION_C11
#define NOEXCEPT noexcept
#else
#define NOEXCEPT
#endif
void f() NOEXCEPT {
// whatever
}
還有兩種其他方式可以使用這樣的宏。您可以檢查它是否是定義:
#ifdef MACRO
// code for one branch
#else
// code for other branch
#endif
對於代碼,因爲MACRO
已定義,預處理器將着眼於在第一分支代碼,並跳過代碼在第二分支。如果MACRO
尚未定義,它將跳過第一個分支中的代碼而不是第二個分支中的代碼。你也可以做同樣的事情是這樣的:
#if defined(MACRO)
,或者你可以在預處理器指令使用的常量表達式:
#if MACRO
// code for one branch
#else
// code for other branch
#endif
這裏,MACRO
得到值0,則#if
看到值0,並且預處理器跳過第一個分支。同樣的事情發生在更復雜的表達式:
#if MACRO + 1 > 0
// code for one branch
#else
// code for other branch
#endif
這裏,MACRO
的值爲0,MACRO + 1
具有值1,並且第一分支將被選擇。
相關問題
- 1. 什麼是Ext.Component.initialConfig,它做了什麼,以及在什麼情況下使用它?
- 2. 什麼git暗藏保存做git隱藏不會做,並在什麼情況下你會使用它?
- 3. 什麼是光標,它在做什麼(在這種情況下)?
- 4. 什麼情況下**會有用?
- 5. 如果不是在多種情況下沒有什麼
- 6. 我可以做什麼沒有意圖或在某些情況下,我必然會使用它們嗎?
- 7. 在沒有FPU的情況下浮點數會發生什麼?
- 8. 爲什麼mysql分區在我的情況下沒有效果
- 9. 「:」在這種情況下做什麼?
- 10. sched_yield在這種情況下做什麼?
- 11. *在這種情況下做什麼?:
- 12. .map()在這種情況下做什麼?
- 13. 如果沒有SD卡,會發生什麼情況?
- 14. Spring Roo - 如何在沒有AspectJ的情況下使用它?
- 15. 在什麼情況下做dispatch_async(dispatch_get_main_queue(),^ ...什麼都不做
- 16. 如果代碼沒有做任何事情,它的值是否有效?它做了什麼?
- 17. 如何在沒有http會話的情況下使用CDI- @ SessionScoped
- 18. 如何在使用情況下在什麼情況下使用tsql?
- 19. 與做,而爲什麼在這種情況下值的變化?
- 20. 如果代碼在沒有它的情況下工作,爲什麼要使用自我?
- 21. 垃圾收集器在這種情況下會做什麼?
- 22. 在這種情況下,Ext.Callback會做什麼?
- 23. 3PC在這種情況下會做什麼?
- 24. 在這種情況下for =「power」會做什麼?
- 25. 有什麼用在這種情況下
- 26. 如果沒有GPS修復,下列代碼會做什麼?
- 27. 在什麼情況下AppDomain.DoCallback()會失敗?
- 28. 在什麼情況下會http.ListenAndServe返回
- 29. ConcurrentBag.TryTake()在什麼情況下會失敗?
- 30. 如果在JVM仍在使用JVM的情況下更新Jar,會發生什麼情況?
你怎麼知道它沒有價值?那麼空串呢? – e0k
[C重複](http://stackoverflow.com/questions/13892191/empty-macro-definition-in-c),在C + +中相同的答案。 – juanchopanza