宏定义的特殊符号
来源:互联网 发布:淘宝网上代购是真的吗 编辑:程序博客网 时间:2024/04/30 20:40
今天一个网上认识的哥们问了一个关于宏定义 ## 的问题,帮他在群里问了下后得到答案。。
在C/C++中,宏定义是由define完成的,define中有三个特殊的符号值得我们注意:
1. #:在宏展开的时候会将#后面的参数替换成字符串,如:
#define p(exp) printf(#exp);
调用p(asdfsadf)的时候会将#exp换成"asdfsadf"
2. ##:将前后两个的单词拼接在一起。例如《The C Programming Language》中的例子:
#define cat(x,y) x##y
调用cat(var, 123)展开后成为var123.
3. #@:将值序列变为一个字符
#define ch(c) #@c
调用ch(a)展开后成为'a'.
自己写了一小段测试程序:
#define A(a,b) a##b
#define B(a) #a
#define C(a) #@a
#include <iostream>
using namespace std;
void main()
{
int v = 0,v1 = 1,v12 = 2;//v stands for var
cout << A(v1,2) << endl;
cout << B(v1) << endl;
cout << C(v) << endl;
}
结果为:
2
v1
v
在c++面对对象化编程还可以这样用:
#define A
public://此处加一些成员,并且可以在成员名上用##下一些功夫
class Object
{
A
};
以前没有太在意宏的这些语法,感觉宏这种拼接语法这样的功能很神奇。c++很自由,很强大。。。
以上内容转帖至http://student.csdn.net/space.php?uid=115101&do=thread&id=3026
- 宏定义的特殊符号
- c中宏定义的特殊符号
- c中宏定义的特殊符号
- 宏定义中的一些特殊符号的用法
- Makefile一些特殊符号的定义
- #define宏定义中特殊符号
- C++宏定义中的特殊符号
- C/C++宏的特殊符号
- C/C++编译预处理:宏定义指令、文件包含指令、条件编译指令和特殊符号处理
- 特殊符号的读音
- 特殊符号的拼打法
- 特殊符号的处理
- Perl的特殊符号
- java的特殊符号
- 一些特殊符号的打法
- 特殊符号的英文读音
- 特殊符号的英文说法
- Perl的特殊符号
- webservice Axis发布deploy.wsdd出错 和Axis取消 undeploy.wsdd 出错
- Asp.net 长文章分页
- 通过SmartInvoke运用java与flex轻松构建cs程序(数据类型的传递)
- 从VC6到VC9移植代码问题总结
- 第四天:论坛主要实现的功能
- 宏定义的特殊符号
- 实例vpn网络的搭建与路由设置
- 关于Hibernate中inverse=true的转载
- struts入门之验证(1)
- JS 修改
- 得到access表字段名VBS脚本
- delphi2010中DElphi class explorer妙用
- 两字符串比较 找出最大公共字串 11月18日
- strmbasud.lib strmbaseu.是DX8的SDK中BaseClasses编译出来的