#define PrintString(arg) cout<<#arg
在宏表达式中,字符#放在参数arg的前面,表示在进行转换时,参数放在双引号中。
如:PrintString(hello);
预处理器就会把它转换为:cout<<”hello”;
逻辑#if指令:
逻辑#if指令的使用方式有两种。第一,可以测试某个符号以前是否用#define指令定义过。第二,可以测试某个常量表达式是否为真。
要测试某个标识符是否存在(在以前的#define指令中定义),可以使用如下所示的指令:
#if defined 标识符
如果指定的标识符已定义,#if后面的语句组就包含在要编译的源文件中。这个语句组用如下指令结束:#endif
如果标识符还未定义,就跳过#if和#endif之间的语句,它们也不是程序的一部分。
防止代码重复:
也可以测试标识符是否不存在。这个指令的一般形式如下所示:
#if !define 标识符
如果标识符以前没有定义,就把#if和#endif之间的语句包含在要编译的源文件中,其缩写方式如下:#ifndef 标识符