gpt4 book ai didi

c - C中的宏....请给出解决方案

转载 作者:行者123 更新时间:2023-11-30 18:43:42 26 4
gpt4 key购买 nike

假设我声明了一个宏名称任何东西,xyz()

现在我正在创建另一个宏 xyz1() 并引用第一个宏,即第二个宏中的 xyz()

最后,我将创建另一个宏 xyz2() 并在第三个宏中引用第二个宏。

现在我的问题是:这是正确的(它执行时没有任何问题)?宏xyz()定义了两次。为什么它没有给出错误?解决办法是什么?

最佳答案

不,第一个宏只能定义一次。当你写的时候

#define Symbol SymbolResolution

只要预处理器看到 Symbol,就会用 Symbol 替换 SymbolResolution。如果 SymbolResolution#define,或者包含一些内部有 #define 的符号,它们也会发生同样的情况 - 它们都会被替换。这种情况会一直发生,直到整个翻译单元中没有带有 #define 的符号为止。

因此您可以根据需要从其他宏中引用宏。但是,您不能递归地引用宏。您还应该小心这一点 - 如果您滥用宏,这很容易导致大量难以阅读且很难调试的代码。

关于c - C中的宏....请给出解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591298/

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