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

问题描述:

我想让我的应用程序在win32和x64平台上工作。我在头文件中添加了下面的代码,但是我得到了C4005警告。我怎样才能避免这种情况?警告C4005'标识符':宏重定义

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

['#elif'](https://msdn.microsoft.com/en-us/library/ew2hz0yd.aspx)? – Tas

即使在64位编译中,在Windows上编译时总是会定义_WIN32宏。你要重新安排你的代码位:

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

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

如果可能的话,更好的做法是使用sizeof运算符以及任何包含分析信息的结构。

+0

Thanks @ 1201ProgramAlarm您的解决方案工作完美。 –

+0

*“_ WIN32宏总是定义”*在Windows上,而不是在* nix ;-)上的情况 – Jarod42