1)给替换变量加引号
#define MYSTR "I love you" cout << MYSTR ; //I love you而不是"I love you"
如果
cout << "MYSTR" ; //则会输出"MYSTR"而不是"I love you" 可以这样做
cout << #MYSTR ; //则会输出 "I love you"即cout << "\"I love you\"";
如
#define join(a,b) ab 这样不会理解为参数a的值与参数b的值的连接,即如join(10,999)不会理解为10999而是把ab理解为字符串,即输出ab
这时可以
#define join(a,b) a##b
#define MYSTR "I love you" cout << MYSTR ; //I love you而不是"I love you"
如果
cout << "MYSTR" ; //则会输出"MYSTR"而不是"I love you" 可以这样做
cout << #MYSTR ; //则会输出 "I love you"即cout << "\"I love you\"";
2)在宏表达式中连接几个参数
如
#define join(a,b) ab 这样不会理解为参数a的值与参数b的值的连接,即如join(10,999)不会理解为10999而是把ab理解为字符串,即输出ab
这时可以
#define join(a,b) a##b
则join(10,999)就会输出10999
标准的预处理器宏
__LINE__ 当前源文件中的代码行号,十进制整数
__FILE__ 源文件的名称,字符串字面量
__DATE__ 源文件的处理日期,字符串字面量,格式mmm dd yyyy其中mmm是月份如Jan、Feb等 dd是01-31 yyyy是四位的年份
__TIME__ 源文件的编译 时间,也是字符串字面量格式是hh:mm:ss
__STDC__ 这取决于实现方式,如果编译器选项设置为编译标准的C代码,通常就定义它,否则就不定义它
__cplusplus 在编译C++ 程序时,它就定义为199711L
原文链接: https://www.cnblogs.com/sdywcd_coffee/archive/2010/01/06/1640723.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/6434
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!