c++ - 警告 C4005 'identifier' : macro redefinition

标签 c++ visual-studio-2010 32bit-64bit preprocessor-directive

我希望我的应用程序能够在 win32 和 x64 平台上运行。我在头文件中添加了以下代码,但收到 C4005 警告。我怎样才能避免这种情况?

#ifdef WIN32
#define SIZEOF_ANALYSIS_INFO 168    
#endif
#ifdef _WIN64
#define SIZEOF_ANALYSIS_INFO 172
#endif

最佳答案

现在在 Windows 上编译时总是会定义 _WIN32 宏,即使是在 64 位编译中也是如此。您需要稍微重新排列一下代码:

#ifdef _WIN64
#define SIZEOF_ANALYSIS_INFO 172
#elif defined(_WIN32)
#define SIZEOF_ANALYSIS_INFO 168
#endif

如果你总是用 VC 编译它,你可以在中间使用 #else

如果可能的话,更好的方法是对保存分析信息的任何结构使用 sizeof 运算符。

关于c++ - 警告 C4005 'identifier' : macro redefinition,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34408937/

相关文章:

c++ - 是否有 Windows 驱动程序函数相当于 Windows 文件 api SeFileAttributes

c++ - 标准 C++ 库中 size_t 的有符号变体

visual-studio-2010 - setup.exe -> 安装 VS 2010 不执行任何操作

python - Python 版本行是什么意思?

跨不同编译器的 C++ 库

c++ - 预期的声明说明符或 '...' 之前的 'MLD_PACKET'

c++ - 结构原型(prototype)

c - 在 Visual Studio 2010 中传递命令行参数?

linux - 在 64 位 Debian wheezy 多架构主机上编译使用 ssl 的 32 位二进制文​​件

delphi - WParam 的 "low word"和 "high word"位置在 64 位代码中是否发生变化?