#define的一些不常见的用法
2011-12-14 15:25
267 查看
一 #define后含有 ## 符号,如以下代码所示:
1.
其中的 ## 表示连接的意思。即如有#define Macro1(a,b) a##b 表示a连接b,int a = Macro1(12,34) ;a的值为1234.
2.用于可变参数宏中
##的作用为:万一 __VA_ARGS__ 为空,省去之前的逗号,以免fprintf出现错误。(http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html#Variadic-Macros)
二 #define后含有 #@ 符号
#define Macro2(a) #@a 表示将a加上单引号,返回的是一个const char。如char i = Macro2(1) ;i的值为'1'; char i = Macro(123);则i 的值为'3'。然而,参数不应超过四个字符,否则将会编译出错。返回信息类似于 "too many characters in constant "。
三 #define后只含 # 符号
#define Macro3(a) #a 表示将a上加上双引号。如char* str = Macro3(23423);则str的值为"23423"。
1.
#define DEFAULT_COMMAND_REGISTER(command_request,command,factory) \ private: \ void_t __##command_request##_command##_register() \ { \ (void_t)Hyer::Vision::Cmd::CommandRegister<command_request,command,factory>::commandRegister; \ }
其中的 ## 表示连接的意思。即如有#define Macro1(a,b) a##b 表示a连接b,int a = Macro1(12,34) ;a的值为1234.
2.用于可变参数宏中
#define DEBUG(fmt, args...) fprintf(stderr, fmt, ##args)
##的作用为:万一 __VA_ARGS__ 为空,省去之前的逗号,以免fprintf出现错误。(http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html#Variadic-Macros)
二 #define后含有 #@ 符号
#define Macro2(a) #@a 表示将a加上单引号,返回的是一个const char。如char i = Macro2(1) ;i的值为'1'; char i = Macro(123);则i 的值为'3'。然而,参数不应超过四个字符,否则将会编译出错。返回信息类似于 "too many characters in constant "。
三 #define后只含 # 符号
#define Macro3(a) #a 表示将a上加上双引号。如char* str = Macro3(23423);则str的值为"23423"。
相关文章推荐
- C语言中#define中的一些特殊用法
- 一些#define用法
- iOS开发之UIWebView的常见一些用法
- JQuery一些常见用法与技巧介绍
- axios的一些常见用法
- mysql一些函数常见的用法(group by、order by、....)(1)
- vim的一些常见用法
- 小白学Linux之gcc的一些常见用法
- textview的一些不常见用法
- fastjson的一些常见用法
- windows下cmd的一些常见用法
- Objective-C中#define的常见用法
- swift的一些常见用法
- 小白学Linux之gcc的一些常见用法
- <head>中一些标签的常见用法
- iBatis一些常见用法
- 小白学Linux之gcc的一些常见用法
- @awk判断输出----一些不常见的用法@
- #define命令的一些高级用法
- ViewStub的一些不常见的用法