C++ C-定义宏的预处理器

C++ C-定义宏的预处理器,c++,c,c-preprocessor,C++,C,C Preprocessor,您好,我需要帮助定义一个依赖于变量的宏。 例如: 温度将在函数中设置。 例如: 设置计数宏和定义临时值在不同的文件中 有人能帮我吗 短暂性脑缺血发作 这是不可能的。宏是在编译期间解析的,因此运行时更改(如设置变量)不会影响宏。这是不可能的温度仅在运行时设置,不可用于预处理。如果需要将COUNT设置为5,则可以使用-DTEMP作为编译器标志来定义它。您必须将代码更改为以下内容: #ifdef TEMP #define COUNT 5 #else #define COUNT 6 #endif

您好,我需要帮助定义一个依赖于变量的宏。 例如:

温度将在函数中设置。 例如:

设置计数宏和定义临时值在不同的文件中

有人能帮我吗

短暂性脑缺血发作
这是不可能的。宏是在编译期间解析的,因此运行时更改(如设置变量)不会影响宏。

这是不可能的<代码>温度仅在运行时设置,不可用于预处理。如果需要将
COUNT
设置为
5
,则可以使用
-DTEMP
作为编译器标志来定义它。您必须将代码更改为以下内容:

#ifdef TEMP
  #define COUNT 5
#else
  #define COUNT 6
#endif

define
s用于“预处理器”。不能像普通变量那样设置预处理器宏,尤其是运行时。预处理器作为编译过程中的一个单独步骤在实际编译器之前运行。为什么将COUNT定义为宏而不是变量?顺便说一句,您不能在
define
预处理器命令中输入变量名。无意冒犯,但您显然不知道自己在做什么。我建议您忘记预处理器和
#define
,尝试使用变量
bool temp=false;int count=temp?5 : 6; ... 温度=真等。。如果你有不这样做的理由,请分享。托尼,计数不是整数。它实际上是根据温度启用和禁用gpio。所以我不能使用bool类型。我希望我的应用程序根据变量TEMP来决定计数值。谢谢你们的回复,这就是它的作用。如果定义了
TEMP
,则
COUNT
等于5,否则
COUNT
等于6。如果你想让
COUNT
的值取决于
TEMP
的值,你应该看看
gcc
是否支持这一点。我是一名嵌入式开发人员。在应用程序中,变量TEMP将在运行时通过读取gpio引脚进行设置。不可能设置TEMP和定义宏吗?啊,在这种情况下,恐怕这个解决方案行不通,请查看上面@Tony-D的评论。基本上,
COUNT
应该是一个变量/函数,而不是一个定义的常量。
void func()
{
    TEMP = 1;
}
#ifdef TEMP
  #define COUNT 5
#else
  #define COUNT 6
#endif