码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++宏的一些特殊用法

时间:2014-07-18 21:18:06      阅读:267      评论:0      收藏:0      [点我收藏+]

标签:os   io   for   re   c   div   

在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;
}
 
结果为:
 
1
 
v1
 
v
 
在c++面对对象化编程还可以这样用:
 
#define A
 
public://此处加一些成员,并且可以在成员名上用##下一些功夫
 
class Object
 
{
 
     A
 
};

C/C++宏的一些特殊用法,布布扣,bubuko.com

C/C++宏的一些特殊用法

标签:os   io   for   re   c   div   

原文地址:http://www.cnblogs.com/xiaozh/p/3850119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!