VC宏定义 ## 说明
来源:互联网 发布:卖家数据分析 编辑:程序博客网 时间:2024/04/28 07:21
在分析代码文件时经常见到下面的宏定义:
例1:
#define __CRT_WIDE(_String) L##_String
举例说明:
wprintf( __CRT_WIDE("Hello world") );
预处理后是
wprintf( L"Hello World" );
如果把 ## 去掉
#define __CRT_WIDE(_String) L_String
__CRT_WIDE(_String) 中的 _String 无论是什么, 经过预处理后的
结果都是 L_String
wprintf( __CRT_WIDE("Hello world") );
此时编译器报告错误:
error: 'L_String' : undeclared identifier
----------------------------------------------------------------------------------------------------------------------------
例 2:
下面是 ATL 中 SmartPoint 的简化定义:
// ATL 智能指针
#define DECLARE_SMARTPTR(ifacename) /
typedef CComQIPtr<ifacename> SP##ifacename;
在项目代码中的下面语句:
DECLARE_SMARTPTR( IHTMLDocument2 ) ;
预处理后是:
typedef CComQIPtr< IHTMLDocument2 > SPIHTMLDocument2 ;
以后就能用 SPIHTMLDocument2(变量类型) 定义 指向 IHTMLDocument2 接口的指针。
SPIHTMLDocument2 iHtmlDoc ;
注意点:
(1) #define __CRT_WIDE(_String) L##_String 和 #define __CRT_WIDE(_String) L ## _String 相同
即: ## 2 侧空格有无和多少没有关系.
(2) 通常情况是替换紧挨 ## 2 侧的部分
(3) ## 使宏替换整体的一部分
- VC宏定义 ## 说明
- VC宏定义 ##说明
- VC宏定义 及常用宏定义说明
- VC 宏定义一
- 几个VC宏定义
- vc一些宏定义
- VC项目宏定义
- VC查看宏定义
- VC++实用宏定义
- VC 宏定义使用
- VC++宏定义数据类型大全
- vc 项目的宏定义
- vc 项目的宏定义
- VC++宏定义数据类型大全
- 常用宏定义及系统宏说明
- cocos2dx_simpleGame中两个宏定义说明
- 20131012宏定义的补充说明
- c/c++内置宏定义说明
- scheme 爱好者论坛
- C# 加密解密URL传输的字符串
- C# 在图片上生成图片水印
- 曾经的Palm 渐行渐远
- 十门技术精通
- VC宏定义 ## 说明
- C# 正则过滤html,js,css代码
- 网络安全技术详解 跳板攻击与防御
- js 常用
- C#数组类型(Array types)
- 社会工程学翻译资料
- Web页面向内嵌的Flash (AS) 传递参数的方法
- Nehe的贴图步骤(转)
- 在asp.net中读取xml文件信息的4种方法