【问题标题】:Warning C4005 'identifier' : macro redefinition警告 C4005 '标识符':宏重新定义
【发布时间】:2016-03-28 07:26:27
【问题描述】:

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

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

【问题讨论】:

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


【解决方案1】:

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

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

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

如果可能,最好将sizeof 运算符与保存分析信息的任何结构一起使用。

【讨论】:

  • 感谢@1201ProgramAlarm,您的解决方案运行良好。
  • "_WIN32 宏总是被定义" 在 windows 上,而不是在 *nix 上 ;-)
猜你喜欢
  • 2012-12-31
  • 1970-01-01
  • 2020-05-27
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2020-04-25
相关资源
最近更新 更多