3
A
回答
11
不,它們是不同的。
在
#define A;
A
和;
是兩個不同的令牌。 A
是宏名稱,;
是它的定義。所以你可以,如果你真的想,寫:
printf("Hello, world\n")A
,這將是相當於
printf("Hello, world\n");
(但請不要這麼做。)
由於唯一A
是指在#ifdef
中,你所做的只是測試它是否已被定義,不管如何定義。分號無關緊要,因爲您不使用分號。
正如風格和清晰度的問題,你應該始終有一個宏的名稱及其定義之間的空間:
#define A ;
這是,如果擴張的第一個標記是(
角色尤爲重要。如果它緊跟在宏名稱之後,那麼就有一個類似於函數的宏定義(宏需要參數)。如果宏名稱和(
之間有空格,(
只是宏擴展的一部分。
說到分號,一個常見的錯誤是包括宏定義不必要分號:
#define THE_ANSWER 42;
...
printf("The answer is %d\n", THE_ANSWER);
由於分號是宏定義的一部分,這將擴展爲:
printf("The answer is %d\n", 42;);
這是一個語法錯誤。
相關問題
- 1. 在makefiles中忽略(@)符號
- 2. 忽略符號
- 3. ARGV忽略#號
- 4. Excel宏:忽略錯誤
- 5. Excel宏 - 忽略列標題?
- 6. 在C中忽略異常#
- 7. 忽略分號會影響JavaScript的性能嗎?
- 8. 解析csv文件,忽略引號中逗號的逗號c#
- 9. 忽略SVN忽略...可能嗎?
- 10. dimple tickFormat忽略分組逗號
- 11. Firefox忽略CSS逗號分隔的類
- 12. Stanford coreNLP - 分詞忽略撇號
- 13. Python的拆分忽略逗號
- 14. 排序忽略標點符號(Objective-C)
- 15. 如何忽略標點符號c#
- 16. 忽略逗號串
- 17. 忽略逗號CIN
- 18. C - 如何使用宏忽略生產版本中的assert()
- 19. VBA宏合併單元格,用逗號分隔,忽略空單元格
- 20. 如何通過忽略逗號c#來拆分字符串?
- 21. 的JavaScript /正則表達式忽略分號在雙引號
- 22. 忽略ctrl-c
- 23. SCons:GCC忽略-c
- 24. 在array_map中忽略逗號與str_getcsv?
- 25. 在mysql搜索中忽略撇號
- 26. 在Sqlite中忽略標點符號
- 27. 在ElasticSearch中忽略撇號(所有權)
- 28. 在Ruby中拆分字符串,忽略括號內容?
- 29. 在Talend中導入CSV雙引號分隔列被忽略
- 30. ListView:drawSelectorOnTop在主題中被忽略了嗎?
你有沒有mesn printf(「答案是%d \ n」,42;);'最後一個例子? –
@EnzoFerber:的確如此,謝謝! –
@凱瑟湯普森爲什麼A;將不會被視爲一個整體的宏名稱? – Renjie