你也许不知道的#define用法
来源:互联网 发布:游族网络大将军 编辑:程序博客网 时间:2024/04/28 05:28
你也许不知道的#define用法
最近看com相关的资料,看到CCmdTarget实现com接口的时候,去读了一些宏的定义,在afxdisp.h头文件中
#define BEGIN_INTERFACE_PART(localClass, baseClass) \
class X##localClass : public baseClass \
本来这个宏定义很容易理解的,但是这里多出个X##,我真没见过这种用法,不晓得它是什么用意。
后来问了几个朋友也都不知道。
你知道么?
也许你也不知道~呵呵,最后我还是找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的define
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
怎么样,很神奇吧
再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P
最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";
最后留几个小试验给大家去测测:
#define Dec(x,y) (x-y)
int n = Dec( A(123,1), 1230);
n = Conn(123, Conn(123,332) );
char* str = A("12", ToString( Dec(3,1));
结果会如何呢? 嘿嘿嘿嘿~
#define BEGIN_INTERFACE_PART(localClass, baseClass) \
class X##localClass : public baseClass \
本来这个宏定义很容易理解的,但是这里多出个X##,我真没见过这种用法,不晓得它是什么用意。
后来问了几个朋友也都不知道。
你知道么?
也许你也不知道~呵呵,最后我还是找到了相关的资料,解读了这个define,还顺便认识了另外两个不常用的define
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示什么?表示x连接y,举例说:
int n = Conn(123,456); 结果就是n=123456;
char* str = Conn("asdf", "adf")结果就是 str = "asdfadf";
怎么样,很神奇吧
再来看#@x,其实就是给x加上单引号,结果返回是一个const char。举例说:
char a = ToChar(1);结果就是a='1';
做个越界试验char a = ToChar(123);结果是a='3';
但是如果你的参数超过四个字符,编译器就给给你报错了!error C2015: too many characters in constant :P
最后看看#x,估计你也明白了,他是给x加双引号
char* str = ToString(123132);就成了str="123132";
最后留几个小试验给大家去测测:
#define Dec(x,y) (x-y)
int n = Dec( A(123,1), 1230);
n = Conn(123, Conn(123,332) );
char* str = A("12", ToString( Dec(3,1));
结果会如何呢? 嘿嘿嘿嘿~
- 你也许不知道的#define用法
- 你也许不知道的#define用法
- 你也许不知道的#define用法
- 你也许不知道的#define用法 [转载]
- [转载]你也许不知道的#define用法
- 一些你也许不知道的#define 用法
- 你也许不知道的真实历史
- java里面一些你也许还不知道的东西
- 也许你还不知道的类型转换方法
- sp_executesql和execute你也许不知道的
- 也许你不知道的c#基本数据类型及其默认值
- 你也许不知道的批量更新语句
- 10个你也许不知道的Ubuntu技巧
- 也许你不知道的c#基本数据类型及其默认值
- 10个你也许不知道的Ubuntu技巧
- 关于构造函数,也许你不知道的
- 10个你也许不知道的Ubuntu技巧
- 10个你也许不知道的Ubuntu技巧
- MVC和MVP的区别
- hibernate的多条件动态查询(非常实用)
- (一)Win8+XAML+C# 类之间传值
- 半数集问题
- Valid Palindrome
- 你也许不知道的#define用法
- 完美显示html的版权符号
- NYOJ 458题 小光棍数
- 关于Visual C++增量链接以及.textbss
- Super Mario(hdu4417,树状数组)
- vs2005中字节对齐研究
- hdu4535吉哥系列故事——礼尚往来
- 复选框全选与全不选操作
- 【美化§寂寞的伞win7电脑主题】