gpt4 book ai didi

#define 可以包含以前定义的变量吗?

转载 作者:太空狗 更新时间:2023-10-29 15:52:06 24 4
gpt4 key购买 nike

C 中的定义是如何处理的?它们是按行号顺序处理的吗?

例如,下面的语句是否有效?

#define ONE  1
#define TWO (ONE+1)

依赖于先前定义的定义会不会有任何问题?

最佳答案

是的,一个#define 可以毫无问题地引用其他#define 替换和宏。

此外,这些常量的表达式将保持为常量表达式。

您的第二个表达式在文本上等同于文本中的 (ONE+1) 替换,对嵌套级别没有限制。换句话说,如果您稍后定义

#define THREE (TWO+1)

然后在赋值中使用它i = THREE,你会得到

i = ((ONE+1)+1)

预处理后。

如果您打算将此技巧用于数值,常见的替代方法是使用具有特定值的 enum,即

enum {
ONE = 1
, TWO = ONE+1
, THREE = TWO+1
, ... // and so on
};

关于#define 可以包含以前定义的变量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155809/

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