标记粘贴运算符(##)宏定义内的标记粘贴运算符(##)会合并两个参数。它允许在宏定义中两个独立的标记被合并为一个标记。例如:
当上面的代码被编译和执行时,它会产生下列结果: token34 = 40 这是怎么发生的,因为这个实例会从编译器产生下列的实际输出: printf ("token34 = %d", token34); 这个实例演示了 token##n 会连接到 token34 中,在这里,我们使用了字符串常量化运算符(#)和标记粘贴运算符(##)。 defined() 运算符预处理器 defined 运算符是用在常量表达式中的,用来确定一个标识符是否已经使用 #define 定义过。如果指定的标识符已定义,则值为真(非零)。如果指定的标识符未定义,则值为假(零)。下面的实例演示了 defined() 运算符的用法:
当上面的代码被编译和执行时,它会产生下列结果: Here is the message: You wish! 参数化的宏CPP 一个强大的功能是可以使用参数化的宏来模拟函数。例如,下面的代码是计算一个数的平方: int square(int x) { return x * x; } 我们可以使用宏重写上面的代码,如下: #define square(x) ((x) * (x)) 在使用带有参数的宏之前,必须使用 #define 指令定义。参数列表是括在圆括号内,且必须紧跟在宏名称的后边。宏名称和左圆括号之间不允许有空格。例如:
当上面的代码被编译和执行时,它会产生下列结果: Max between 20 and 10 is 20 |
Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )
GMT+8, 2024-11-24 13:53 , Processed in 0.017628 second(s), 18 queries .
Powered by Discuz! X3.4
© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】