c语言相邻字符串字面量,C语言预处理#运算符的细节
生活随笔
收集整理的這篇文章主要介紹了
c语言相邻字符串字面量,C语言预处理#运算符的细节
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#運算符將宏的一個參數轉換為字符串字面量,它僅允許出現在帶參數的宏的替換列表中。
例如:使用PRINT_INT宏作為一個快捷的方法來整形變量或者表達式的值,#運算符可以使PRINT_INT為每個輸出的值添加標簽:
#define PRINT_INT(n) printf(#n " = %d\n", n)
n之前的#運算符通知預處理器根據PRINT_INT的參數,創建一個
字符串字面量,因此,調用PRINT_INT(i/j);就會變成:
printf("i/j" " = %d\n",i/j)
又因為C語言中相鄰的字符串字面量會被合并,所以,上面語句等價于:
printf("i/j = %d\n",i/j)
##運算符可以將兩個記號“
粘和”在一起,成為一個記號,如果其中一個是宏參數,“粘和”會在形式參數被相應的實際參數替換后發生。如一下宏:
#define MK_ID(n) i##n
當其被調用時,(比如:MK_ID(1)),預處理器首先適用實際參數1替換形式參數n,然后,將i和其粘和,即成為:i1
##運算符的一個應用實例:構造多個版本的max函數:
#define GENERIC_MAX(type) \
type type##_max(type x,type y) \
{ \
return x > y ? x:y; \
} \
總結
以上是生活随笔為你收集整理的c语言相邻字符串字面量,C语言预处理#运算符的细节的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 四月是你的谎言是谁画的啊?
- 下一篇: 爱我中华是谁写的呢?