预处理器运算符
来源:互联网 发布:jsp和php 编辑:程序博客网 时间:2024/06/04 19:05
宏延续运算符(\)
一个宏通常写在一个单行上。但是如果宏太长,一个单行容纳不下,则使用宏延续运算符(\)。例如:
#define message_for(a, b) \ printf(#a " and " #b ": We love you!\n")
字符串常量化运算符(#)
在宏定义中,当需要把一个宏的参数转换为字符串常量时,则使用字符串常量化运算符(#)。在宏中使用的该运算符有一个特定的参数或参数列表。例如:
#include <stdio.h>#define message_for(a, b) \ printf(#a " and " #b ": We love you!\n")int main(void){ message_for(Carole, Debra); return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
Carole and Debra: We love you!
标记粘贴运算符(##)
宏定义内的标记粘贴运算符(##)会合并两个参数。它允许在宏定义中两个独立的标记被合并为一个标记。例如:
#include <stdio.h>#define tokenpaster(n) printf ("token" #n " = %d", token##n)int main(void){ int token34 = 40; tokenpaster(34); return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
token34 = 40
这是怎么发生的,因为这个实例会从编译器产生下列的实际输出:
printf ("token34 = %d", token34);
这个实例演示了 token##n 会连接到 token34 中,在这里,我们使用了字符串常量化运算符(#)和标记粘贴运算符(##)。
defined() 运算符
预处理器 defined 运算符是用在常量表达式中的,用来确定一个标识符是否已经使用 #define 定义过。如果指定的标识符已定义,则值为真(非零)。如果指定的标识符未定义,则值为假(零)。下面的实例演示了 defined() 运算符的用法:
#include <stdio.h>#if !defined (MESSAGE) #define MESSAGE "You wish!"#endifint main(void){ printf("Here is the message: %s\n", MESSAGE); return 0;}
当上面的代码被编译和执行时,它会产生下列结果:
Here is the message: You wish!
0 0
- 预处理器运算符
- C# 关键字,运算符,预处理器指令
- ##预处理运算符
- C预处理运算符
- C语言预处理运算符
- C/C++预处理运算符
- C语言预处理运算符
- C语言预处理运算符
- C/C++预处理运算符
- 预处理命令“ # 运算符”和“ ## 运算符”
- 预处理中的“#”运算符和“##”运算符
- C语言的##运算符-预处理器的粘合剂
- 预处理命令“ # 运算符”和“ ## 运算符” "#@"运算符
- 预处理命令“ # 运算符”和“ ## 运算符” "#@"运算符
- C语言预处理中的 # 和 ## 运算符
- C语言预处理#运算符的细节
- 预处理宏与移位运算符
- c语言预处理运算符# #作用
- 【Python爬虫3】在下载的本地缓存做爬虫
- css权重
- 【DP_树形DP专题】题单总结
- swift与OC的混编
- 圣彼得堡圣以撒大教堂(金碧辉煌)
- 预处理器运算符
- 堆和栈的区别
- I2C知识点
- Combination Sum系列的三个题目39,40,216--重要(和78. Subsets ,90. Subsets II类似)
- 【Python爬虫4】并发并行下载
- 【LeetCode】500. Keyboard Row【E】【75】
- VGA标准消隐时间查询表
- activeform三级联动 [ 2.0 版本 ]
- Python学习之&输入输出(一)