警告C4005'标识符':宏重定义
问题描述:
我想让我的应用程序在win32和x64平台上工作。我在头文件中添加了下面的代码,但是我得到了C4005警告。我怎样才能避免这种情况?警告C4005'标识符':宏重定义
#ifdef WIN32
#define SIZEOF_ANALYSIS_INFO 168
#endif
#ifdef _WIN64
#define SIZEOF_ANALYSIS_INFO 172
#endif
答
即使在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
['#elif'](https://msdn.microsoft.com/en-us/library/ew2hz0yd.aspx)? – Tas