我正在从sourceforge分析FileTransfer开源项目的来源。我是C ++的新手,我遇到了以下宏:
#define USES_CONVERSION int _convert; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw; (_lpw); LPCSTR _lpa; (_lpa)
我理解预处理器在简单宏中完成替换的基本思路,如:
#define PI 3.14
但是我不理解上面显示的长宏(第一个)。有人请解释一下吗?
答案 0 :(得分:1)
它只是取代了
的出现USES_CONVERSION
代码
int _convert; (_convert); UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; (_acp); LPCWSTR _lpw; (_lpw); LPCSTR _lpa; (_lpa)
这只是一个简单的文字替换
答案 1 :(得分:0)
换句话说,这是一个宏功能。并且可以在有人用C语言用C#语言实现getter和setter的情况下使用。
但是在c ++语言中,我们不推荐这种用法,因为它不易理解。
答案 2 :(得分:0)
宏是 ATL 库的一部分,定义在 atlmfc\include\atlconv.h 中,它创建局部变量,由 atlconv.h 中定义的其他宏使用,如 A2W、W2A。 其目的是提供方便的方式在不同类型的字符数组(ansi、widechars)之间进行转换。