#define指令中个常见预处理操作符
来源:互联网 发布:wcf服务编程第四版pdf 编辑:程序博客网 时间:2024/05/17 22:42
#define指令中个常见预处理操作符
1. 字符串化(#)
# 操作符用于有参数的宏定义中, 把宏参数转换成一个常量字符串.
# 操作符放在宏参数的前面,它将把宏参数值加上“”, 转换成字符串。
例如:
#define stringer( x ) printf( #x "/n" )
int main()
{
stringer( In quotes in the printf function call/n );
stringer( "In quotes when printed to the screen"/n );
stringer( "This: /" prints an escaped double quote" );
}
// 经过宏的预处理后转换为下面代码:
int main()
{
printf( "In quotes in the printf function call/n" "/n" );
printf( "/"In quotes when printed to the screen/"/n" "/n" );
printf( "/"This: ///" prints an escaped double quote/"" "/n" );
}
程序的运行结果:
In quotes in the printf function call
"In quotes when printed to the screen"
"This: /" prints an escaped double quotation mark"
通过观察发现,宏预处理后在宏参数前后添加了""
2. 字符化(#@)
#@ 操作符用于带参数的宏定义中, 放在宏参数的前面,实际的参数值将被单引号包括, 作为字符
例如:
#define makechar(x) #@x
a = makechar(b);
经过宏展开:
a = 'b';
3. 符号粘贴操作符(token paste operator): ##
##是一种分隔连接方式,它的作用是先分隔,然后进行强制连接。
其中,分隔的作用类似于空格。在普通的宏定义中,预处理器一般把空格解释成分段标志,对于每一段和前面比较,相同的就被替换。
但是这样做的结果是,被替换段之间存在一些空格。如果我们不希望出现这些空格,就可以通过添加一些##来替代空格。
另外一些分隔标志是,包括操作符,比如+, -, *, /, [,] ,所以尽管下面的
宏定义没有空格,但是依然表达有意义的定义:define add(a, b) a+b
而其强制连接的作用是,去掉和前面的字符串之间的空格,而把两者连接起来。
#define paster( n ) printf( "token" #n " = %d", token##n )
int token9 = 9;
paster( 9 );
经过宏展开
printf( "token" "9" " = %d", token9 );
变成
printf( "token9 = %d", token9 );
- #define指令中个常见预处理操作符
- 预处理指令define
- 预处理指令(2) - #define
- 预处理指令--define
- 深度分析define预处理指令
- 预处理器指令 #include 、 #define
- #define和预处理指令总结
- C语言预处理指令 #define
- 常见的预处理指令
- C/C++预处理指令#define 之##连接符的用法
- #define 预处理指令(C++,C#,VB.NET)
- #define和预处理指令的使用
- #define和预处理指令的使用。
- 用预处理指令#define声明一个常数,用以表明一年中有多少秒
- 用预处理指令#define声明一个常数,用以表明一年中有多少秒
- iOS开发#pragma预处理指令与_Pragma操作符
- 多用类型常量,少用#define预处理指令
- C/C++预处理指令#define #ifdef #ifndef #endif
- 通过使用电子称直接连接电脑读取电子称重量的程序
- 命令行创建GSO资源
- hdu 2602 (01 背包)Bone Collector
- Java 值传递 引用传递
- 游戏服务器,已经成功嵌入了LUA脚本功能,并且支持中文脚本编程.留贴纪念.
- #define指令中个常见预处理操作符
- SAP标准教材名称所代表的模块和含义(转)
- 软件测试的复杂性分析
- 小学作业题 看图写数详细解答
- 理财第一步,是记账。
- 储存单位转换
- [整理]symbian中活动对象的简单使用
- pthread_create
- [转加整理]Symbian下用C++实现网页浏览的代码