C语言的井号(#)特殊用法(#define)

1074人阅读 评论(0) 收藏 举报
分类:

一:特殊的字符串宏

[cpp]
#define A(x) T_##x 
#define B(x) #@x 
#define C(x) #x 

我们假设x=1, 则上面的宏定义会被解释成以下的样子
A(1)------>T_1
B(1)------>'1'
C(1)------>"1"


这些主要用于一些字符串处理函数和参数命名上,并不复杂,不过知者甚少


二:屏蔽无用参数警告

[cpp] 
#define UNUSED_PARAM(p)    ((void)p) 
这个用来屏蔽无效参数的
比如

[cpp] view plaincopy
void a(int x1, int x2) 

    // do nothing 

这样会弹出警告,x1,x2是无效的参数
但是,写成这样,就没关系了

[cpp]
void a(int x1, int x2) 

    UNUSED_PARAM(x1); 
    UNUSED_PARAM(x2); 
}

宏的更常见用法我就不写了,比如头文件的保卫宏,版本定义宏,灵活使用确实事半功倍。


文章来源:http://www.2cto.com/kf/201208/148095.html

查看评论

#(井号),##(双井号), #@在C/C++的#define宏定义中的特殊用法

1. #:在宏展开的时候会将#后面的参数替换成字符串,如:           #define p(exp) printf(#exp);        调用p(test)的时候会将#exp...
  • wudidaqueer
  • wudidaqueer
  • 2013年04月26日 14:31
  • 2056

编程中的##(两个井号)和#(一个井号)都是什么意思

连接符 ##(两个井号) 不知道什么符 #(一个井号) ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一...
  • ttxgz
  • ttxgz
  • 2012年03月31日 17:16
  • 2980

C语言(C++语言)中##(两个井号)和#(一个井号)用法

C语言(C++语言)中##(两个井号)和#(一个井号)用法
  • starboybenben
  • starboybenben
  • 2015年11月12日 18:51
  • 2784

C语言宏与单井号(#)和双井号(##)

C语言宏与单井号(#)和双井号(##) 分类: 编程基础 2011-10-20 20:10 11977人阅读 评论(4) 收藏 举报 语言ctokencommandstr...
  • killmice
  • killmice
  • 2015年10月09日 18:28
  • 643

C语言宏与单井号(#)和双井号(##)

C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。 关于#和## 在C语言的宏中,#的功能是将其后面的宏参数进行字...
  • acs713
  • acs713
  • 2011年10月20日 20:10
  • 23185

C语言宏定义时#(井号)和##(双井号)的用法

#在英语里面叫做 pound 在C语言的宏定义中,一个#表示字符串化;两个#代表concatenate 在宏定义中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),即无...
  • chary8088
  • chary8088
  • 2013年02月01日 14:27
  • 3626

C语言宏定义时#(井号)和##(双井号)的用法

#在英语里面叫做 pound 在C语言的宏定义中,一个#表示字符串化;两个#代表concatenate 在宏定义中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),...
  • happyzhouxiaopei
  • happyzhouxiaopei
  • 2015年03月20日 14:46
  • 914

宏定义#井号的用法

单个井号(#):在宏展开的时候会将#后面的参数替换成相应的字符串 #include #define Print(message) printf(#message) int main(int a...
  • yaked
  • yaked
  • 2016年08月14日 22:54
  • 981

C语言的井号(#)特殊用法(#define)

一:特殊的字符串宏 [cpp] #define A(x) T_##x  #define B(x) #@x  #define C(x) #x  我们假设x=1, 则上面的宏定义会被解释...
  • analogous_love
  • analogous_love
  • 2014年03月30日 10:45
  • 1074

C语言宏定义时#(井号)和##(双井号)的用法

http://www.cnblogs.com/welkinwalker/archive/2012/03/30/2424844.html #在英语里面叫做 pound 在C语言的宏定义中...
  • beckdon
  • beckdon
  • 2014年03月05日 14:20
  • 603
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 23万+
    积分: 3817
    排名: 1万+
    欢迎关注『高性能服务器开发』公众号
    欢迎关注『高性能服务器开发』公众号
    博客专栏
    最新评论