gpt4 book ai didi

C 预处理器语法

转载 作者:行者123 更新时间:2023-12-04 11:30:20 26 4
gpt4 key购买 nike

是否可以用 C 预处理器做这样的事情?如果可能的话,正确的语法是什么?我希望看到“5”作为答案,但我得到“7”。谢谢

#include <stdio.h>

#define ENABLE_FEATURE_1 true
#define ENABLE_FEATURE_2 false
#define ENABLE_FEATURE_3 true

#if (ENABLE_FEATURE_1 == true)
#define FT_BIT_0 1
#else
#define FT_BIT_0 0
#endif

#if (ENABLE_FEATURE_2 == true)
#define FT_BIT_1 2
#else
#define FT_BIT_1 0
#endif

#if (ENABLE_FEATURE_3 == true)
#define FT_BIT_2 4
#else
#define FT_BIT_2 0
#endif

#define ENABLED_FEATURES (FT_BIT_0 + FT_BIT_1 + FT_BIT_2)

int main() {
printf("Enabled Features: %i", ENABLED_FEATURES);
return 0;
}

最佳答案

是的。但是您需要定义 truefalse(或至少 true ),否则预处理器会将预处理器条件中的此类无法解析的标记视为 0(请参阅 6.10.1p4 ),这就是为什么您在输出中得到 7 而不是 5(truefalse 在条件语句中被视为 0,并且自 0 == 0 以来,所有 BIT 宏都设置为其非零版本)。

#include ing <stdbool.h> 将提供定义。它们是 guaranteed to be (7.18) :

#define true 1
#define false 0

关于C 预处理器语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52652118/

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