gpt4 book ai didi

c++ - 您如何在 C 预处理器中使用定义进行逻辑异或

转载 作者:行者123 更新时间:2023-12-03 19:39:49 31 4
gpt4 key购买 nike

确保只定义两个名称之一的最简单方法是什么,例如:

#define USE_OPTION1
#define USE_OPTION2

#if not(USE_OPTION1 ^ USE_OPTION2)
#error "You must use at least one option, but not both"
#endif

我知道 C 或 C++ 中没有逻辑 XOR,那么最好的方法是什么?不一定是这样,是吗:

#define USE_OPTION1
#define USE_OPTION2

#ifdef USE_OPTION1
#ifdef USE_OPTION2
#error "You can't use both"
#endif
#endif

#ifdef USE_OPTION2
#ifdef USE_OPTION1
#error "You can't use both"
#endif
#endif

#ifndef USE_OPTION1
#ifndef USE_OPTION2
#error "You must use at least one"
#endif
#endif

最佳答案

您可以通过检查两者的定义是否相同来解决此问题。所以 0 01 1 会抛出错误,而 0 11 0 是允许的。

#if defined(USE_OPTION1) == defined(USE_OPTION2)
#error "You must use at least one option, but not both"
#endif

关于c++ - 您如何在 C 预处理器中使用定义进行逻辑异或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67033165/

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