Q
什麼是用C
1
A
回答
7
它允許從它們的部分構造標識符。例如:
#define CLASS_NAME(name) CLASS__ ## name
會將CLASS_NAME(alpha)
擴大爲CLASS__alpha
。它被廣泛用於boost預處理器庫所使用的技巧中,例如。
#define IF0(a, b) b
#define IF1(a, b) a
#define IF(cond, a, b) IF ## cond(a, b)
這將擴大到IF(0, a, b)
和a
對IF(1, a, b)
b
。另外,有時它用於生成結構和函數名稱(類似於C++模板)。
0
我不確定你用「##」預處理器表示什麼。
C有一個預處理器用於在編譯時擴展宏之前的。這是源代碼的第一遍。有它用於幾個不同的事情:
- 包括其他源/頭文件(
#include
) - 有條件地編譯代碼(
#ifdef
等) - 擴展宏(
#define
)- 方便常量
- 簡單功能
但是,請注意,這不是真的「C」(雖然是規範的一部分),並且如果出錯,可能會導致頭痛。我相信新語言不會這樣做。
+0
嗨達仁jpalecek的答案是我所期待的。感謝您的高舉。 – Hemanth 2010-09-09 06:14:23
相關問題
- 1. 什麼是C#
- 2. C++:什麼是
- 3. 什麼是C#
- 4. 什麼是C++
- 5. 什麼是包括用C
- 6. C++,什麼是:=用於?
- 7. 什麼是'〜'用於C++?
- 8. 什麼是在C#
- 9. 是什麼在C#
- 10. 什麼是&&在C++
- 11. 這是什麼? '[C]: ?'
- 12. 是什麼:: *在C++
- 13. 什麼是在C++
- 14. C++:什麼是:: for?
- 15. 什麼是**在C++
- 16. 什麼是SDK? (C++)
- 17. C++什麼是LPDWORD?
- 18. 什麼是XMLNodeType - C#?
- 19. 什麼是C#C「FILE * f;」?
- 20. 什麼是 「@」 是指在C#
- 21. 什麼是*是指在C
- 22. 什麼是C++(通用(C/C++)與(通用C)/ C++)
- 23. 什麼?在C#中是什麼意思?
- 24. 什麼是堆棧用於?他們爲什麼使用C++?
- 25. 什麼是C++中的ScopeGuard?
- 26. 什麼是C#中的int?
- 27. 什麼語言是c#?
- 28. C中的isatty()是什麼?
- 29. 什麼是/ bin/sh -c?
- 30. 什麼是雙重? (C#)
重複http://stackoverflow.com/questions/1489932/c-preprocessor-and-concatenation – codaddict 2010-09-03 12:29:39