#define <text> <substitute>
定義了一個宏。但是#define <text>
,那就是了?這是做什麼的?例如在標頭警衛的情況下。'#define xxx'(沒有任何價值!)與'#define xxx yyy'(帶值)形成對比嗎?
0
A
回答
5
它還定義了一個宏,被替換爲無。
例如在標頭警衛的情況下。
在這種情況下,我們只需要知道後衛宏是否已被定義 - 我們可以檢查與#ifdef
或#ifndef
。它不需要被定義爲任何東西,所以我們通常不會打擾任何事情。這給出了後衛的通常形式
#ifndef HEADER_H // check whether it's defined, skip to "endif" if so
#define HEADER_H // define it; doesn't need to contain anything
// header contents
#endif // skip to here (end of header) if already defined
因此,包括它一次將包括內容和定義宏;包括它第二次會無害地跳過內容,而不是重複它們,(可能)導致錯誤。
2
它定義了指定的標識符字面意思沒有。就那麼簡單。
1
它定義了一個空的宏。在代碼中遇到該宏詞時,它將被替換爲無。
這並不完全沒有用,因爲仍然可以用#ifdef
檢測宏。它通常用於提供不同代碼段的可選編譯。
當用作包含警衛(使用#ifndef
)時,它將防止在單個源文件中多次處理標題。
3
這種類型的宏沒有任何替代。
#define FOO
這是當宏僅用於測試是否存在有用:
#ifdef FOO
或
#if defined(FOO)
相關問題
- 1. 什麼是「#define XXX」的價值?
- 2. 禁用'值'xxx'對'yyy'消息無效
- 3. MySQL WHERE XXX = ZZZ AND XXX = YYY
- 4. C99有#define嗎?
- 5. C++的#define值
- 6. 原型爲XXX XXX ::不上課XXX匹配任何
- 7. 警告:現場XXX沒有默認值
- 8. #define stringFormat中的值?
- 9. #define的條件值
- 10. 如何更改#define值
- 11. SQLite的列錯誤:表XXX沒有名爲YYY
- 12. 錯誤XXX在YYY沒有指定類型
- 13. 如何比較變量的值對的#define
- 14. 遺漏的類型錯誤:對象#<YYY>有沒有方法「XXX」
- 15. 如何使用#define打印變量,如#define STR(M)= M的值
- 16. libboost-XXX-dev和libboost-XXX有何區別?
- 17. 使用python讀取xxx,yyy,zzz形式的整數字符串
- 18. 使用define的最大值
- 19. const string與#define
- 20. Define BOOST_PHOENIX_ARG_LIMIT沒有效果
- 21. tcl中#define的等價物?
- 22. 與錯誤的#define
- 23. Blackberry :: App。與OS 4.6.xxx和OS 5.0.XXX
- 24. HBASE 0.94.xxx與碼頭8.xxx
- 25. 價值型 'uiStackView' 沒有成員 '形象'
- 26. 有沒有辦法在運行時設置#define的值?
- 27. 類型爲「xxx」的對象無法轉換爲「yyy」類型
- 28. 如何使用autoconf指定#define的值?
- 29. 的#define遠,近的#define WINDEF.H
- 30. 在Python中提取'\ xxx \ xxx \ xxx \ xxx \ xxx \'格式的特定字段?
對於近距離的選民:對,一個基本的問題,可能很容易找到在教程..但仍然,這不是一個有效的問題?讓我修正標題 – quetzalcoatl 2014-10-03 15:07:03