宏定义的妙用
来源:互联网 发布:picasa3官方下载mac 编辑:程序博客网 时间:2024/05/17 01:46
刚下班的时候在写一个小DEMO,主要是能让程序能在ANSI和UNICODE都能正常编译运行的,对于程序的所有的字串我有这样的定义:
#ifdef _UNICODE
typedef std::wstring String;
#else
typedef std::string String;
#endif
这样在程序中能随便使用String这个东西,后来在写一个函数的时候发现了一个问题,对于默认字串参数的函数时一般写成 const String & s = "" 后来编译遇到了问题,就是说类型赋值的问题,因为""不能自动转换为UNICODE,就算对String的操作也是不能自动转换的,后来找了找使用宏是一个比较方便的处理方式,具体宏为:
#ifdef _UNICODE
typedef std::wstring String;
#define S(A) L##A
#else
typedef std::string String;
#define S(A) A
#endif
这样对于那样的默认参数就写成了const String & s =S( ""),这个真是好用啊,后来又查查资料,发现我一下没想起来的系统宏定义 _T与_TEXT 记得以前也用过,_T/_TEXT的宏定义就是L##(字符串) ,L表示长型,及定义的字符串中每个字符为16位(宽字符) 。呵呵呵---发现自己想到了和系统一样的东西了,还是要记录下,不为别的,只鼓励下自己的思考。
其实宏在使用的时候也有很多不好的地方,我相信做程序的都知道,对于宏展开和无类型约束的缺点还是要警惕!
- 宏定义的妙用
- 宏定义的妙用
- 宏定义的妙用
- c++中宏定义的妙用
- 宏定义妙用(一)
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用(z)
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用之一
- VC中预处理指令与宏定义的妙用一
- VC中预处理指令与宏定义的妙用之一
- VC中预处理指令与宏定义的妙用
- VC中预处理指令与宏定义的妙用
- VC预处理指令与宏定义的妙用
- 等ing~
- 关于SelectObject的使用
- 为什么对象被new 以后在执行dup操作?
- c#连接sql2000数据库(c# vs2005)
- uclinux-2008R1-RC8(bf561)到VDSP5的移植(24):CONFIG_NR_CPUS
- 宏定义的妙用
- RHW顶点变换
- sql server trigger
- Daily Share(20080505)
- open session and Hibernate事务处理机制 - Hibernate - Java - JavaEye论坛
- warning: no message line prompt for ID **
- 为 浏览器手动安装 JRE Applet
- 导出/打印Access数据库的结构
- MFC常见问题的处理方式