通过#define连接字符串的特殊方法
来源:互联网 发布:知乎与俄罗斯女人睡觉 编辑:程序博客网 时间:2024/05/05 08:27
http://www.cppblog.com/kerlw/archive/2007/04/20/22381.html
最近看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的特殊用法
- #define的特殊定义
- define的特殊用法
- define的特殊字符
- #define宏的特殊用法
- #define 的特殊用法 ... __VA_ARGS__
- C++#define的用法(含特殊)
- C语言的一些特殊用法(#define)
- C++#define的用法(含特殊)
- #define的几点特殊用法
- define的特殊用法(求教)
- C语言的一些特殊用法(#define)
- Oracle字符串连接的方法
- Oracle字符串连接的方法
- 关于远程教育网类网站建设的解决方案
- ANT 十五大最佳实践经典案例分析
- 缓存问题
- 新方法:采用蓝星际识别引擎的智能预拨号系统
- 来自NASA的项目管理经验(精选24条)
- 通过#define连接字符串的特殊方法
- ASP.NET备份还原数据库
- 用jspsmartupload进行上传下载
- 关于函数指针简介
- 关于wince注册表
- 回家过年
- [转]使用C#进行图像处理的几种方法
- 我要盗我自己的梦幻西游号!
- Sql2005数据类型与Framework类型的对应关系