警告C4005'标识符' :宏重新定义

时间:2015-12-22 05:21:18

标签: 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

1 个答案:

答案 0 :(得分:3)

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

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

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

如果可能的话,最好还是将sizeof运算符用于保存分析信息的任何结构。