0
点赞
收藏
分享

微信扫一扫

C/C++语言宏定义##连接符和符#的使用


C/C++语言宏定义##连接符和符#的使用 


(一)C/C++语言宏定义##连接符和符#的使用



   (1) ## 连接符:在带参数的宏定义中,  用来将两个Token连接为一个Token ,从而形成一个新的子串。 注意这里连接的对象是Token就行,而不一定是宏的变量。



    例子:



#define XNAME(n) x ## n

    当出现int XNAME(1) = 14;时,会被替换为:


int x1=14;



     (2)#符:是将其后面的宏参数进行字符串化操作(Stringfication),即把宏参数变为一个字符串,简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。#符,也就是把传递过来的参数当成字符串进行替代。



    例子:



#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Warning: " #EXP "/n"); } while(0)

当出现WARN_IF (divider == 0);时,相当于如下替换:




do {
if (divider == 0)
fprintf(stderr, "Warning" "divider == 0" "/n");
} while(0);

    可见#EXP将会被替换为【“divider == 0"】

举报

相关推荐

0 条评论