【问题标题】:ensuring uniform #defines among all object files确保所有目标文件之间的#defines 一致
【发布时间】:2013-10-18 18:18:21
【问题描述】:

如何确保我的 C++ 项目中的所有目标文件都使用相同的条件定义进行编译? IE。如果不是,我想确保链接器错误指向冲突的定义。即使编译器积极消除死代码,我也希望这种情况发生。有没有已知的技术?

【问题讨论】:

  • #include <CommonDefines.hpp>...
  • (即,组织你的项目并遵守纪律。)
  • 不要在你的cpp文件中间添加#define WIN32,你可能会没事的;但更重要的是,这就是你的 cmake/make 文件应该做的事情

标签: c++ configuration linker c-preprocessor conditional-compilation


【解决方案1】:

你不能;编译器的各个调用就是这样 - 独立的。确保此结果的唯一方法是拥有所有定义的单一公共源,例如,无论是在 makefile 中指定的命令行还是公共头文件。

【讨论】:

  • 编译是独立的,但是当它全部链接时,如果使用不兼容的编译时标志,是否有办法导致链接器错误?例如。具有给定名称的函数或变量根据标志得到不同的定义;但这违反了单一定义规则......
  • 如果不可能出现链接时错误,那么在启动时进行运行时检查的最不容易出错的方法是什么?
猜你喜欢
  • 2021-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
相关资源
最近更新 更多