【问题标题】:Redefining a #define in c++ on run time [duplicate]在运行时重新定义 C++ 中的#define [重复]
【发布时间】:2017-10-17 02:00:56
【问题描述】:

现在我正在合并两个具有相同核心的代码,但它们与#defines 不同,我需要的是绕过它,在运行时选择我需要的配置,代码使用 if ENABLE(定义)来验证要加载的配置,如何修改代码以使其工作? 谢谢

【问题讨论】:

  • 你不能。当编译器开始编译您的代码时,源代码中已经没有 #defines 和其他预处理器指令的痕迹了。你需要想出一些其他的策略。
  • Teeeeeechnically,某些级别的调试符号可以让您保留它们以实现更好的调试体验:)
  • 将它们声明为变量并更改使用此#defines 的依赖项是否更好?但是比如有很多向量用它们来声明它们的大小,我不能简单地用一个像vector [int]这样的int来声明一个向量大小...
  • @AlessandroQueiroz,向量大小可以是运行时值。你是说数组吗?
  • 我建议你改写你的问题。 :-) 你所说的方式已经有了答案,答案是“你不能。”。也许更详细地解释你最终想要完成的事情,而不是询问如何让你为完成它而拥有的特定想法发挥作用?

标签: c++ embedded


【解决方案1】:

你不能。宏是预处理器。它们在编译期间消失了。 变量是最好的选择。 顺便说一句,这个问题在这里得到了解答。

Changing a macro at runtime in C

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多