gpt4 book ai didi

c - 如何有条件地定义常量

转载 作者:太空宇宙 更新时间:2023-11-04 01:42:23 24 4
gpt4 key购买 nike

我想在我的 C 文件中定义一些常量。

它的汇编代码是这样的:

Const1 = 0

Const2 = 0

IF Condition1_SUPPORT

Const1 = Const1 or (1 shl 6)

Const2 = Const2 or (1 shl 3)

ENDIF

IF Condition2_SUPPORT

Const1 = Const1 or (1 shl 5)

Const2 = Const2 or (1 shl 2)

ENDIF

你能告诉我最简单的实现方法吗?

而且它应该足够灵活,因为我的常量条件的数量都超过了 10。

看了前三个答案,我想我需要多解释一下;我想知道的是如何根据以前的值重新定义我的常量。

最佳答案

您可以使用预处理指令来做到这一点:

#if Condition1_SUPPORT
#define Const1 (1 << 6)
// ...
#elif Condition2_SUPPORT
#define Const1 (1 << 5)
// ...
#endif

要解决对问题的编辑:您不能根据其先前的值重新定义宏。一个宏一次只能有一个值,它的替换列表只在调用时计算,而不是在定义时计算。例如,这是不可能的:

#define A 10
#define A A + 10

首先,它是对宏的非法重新定义:当处理第二行时,A 已经被定义为一个宏,所以它不能用不同的替换重新定义(你必须#undef 宏名在前)。

其次,如果这是合法的(许多编译器接受它),第二行在被调用时将计算为 A + 10,而不是 10 + 1020 如您所愿:当可以调用第二个宏定义时,第一个定义已不存在。

但是,您可以使用不同的名称,如下所示:

#define INITIAL_A 10
#define A INITIAL_A + 10

您应该考虑从 The Definitive C Book Guide and List 获取一本介绍性书籍;其中任何一个都将详细介绍使用预处理指令可以完成的工作。

关于c - 如何有条件地定义常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3089887/

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