gpt4 book ai didi

在运行时检查宏值

转载 作者:太空狗 更新时间:2023-10-29 15:57:42 32 4
gpt4 key购买 nike

假设我在编译期间通过 -D 传递了一个宏定义:

% gcc -DDEF1=ABC -DDEF2=DEF ...

现在,我需要在运行时检查 DEF1 或 DEF2 的值,但这不起作用:

#if DEF1==ABC
...
#else
...
#endif

我做错了什么?是否有可能实现我所需要的?谢谢。

最佳答案

Now, I need to check the value of DEF1 or DEF2 in a runtime,

那是不可能的。预处理器宏的值甚至在编译时间之前就已处理。

您可以将处理器宏转换为变量值并在运行时检查变量值。

按照以下几行应该可以工作。

#define STR2(x) #x
#define STR(X) STR2(X)

char const* str = STR(DEF1);

if ( strcmp(str, "ABC") == 0 )
{
// Process "ABC"
}
else if strcmp(str, "DEF") == 0 )
{
// Process "DEF"
}

关于在运行时检查宏值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334131/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com