gpt4 book ai didi

c - 在 C 中的新 #define 中使用先前定义的 #define

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

做这样的事情是否有任何潜在的问题/危险

#define SAMPLERATE 32 // Sample rate in hertz
#define ONE_MINUTE ( SAMPLERATE * 60 )
#define FIVE_MINUTES ( ONE_MINUTE * 5 )

我的编译器没有发出任何错误或警告。这非常好,因为我可以更改一个 #define 值 (SAMPLERATE),而所有其他值都将设置为它们需要的值,而无需进行其他更改。我只是不完全确定这是最佳做法还是安全的。

最佳答案

宏永远不会在 #define 语句中展开。当你有 #define 时:

#define ONE_MINUTE ( SAMPLERATE * 60 )

定义宏 ONE_MINUTE 扩展(主体)为 ( SAMPLERATE * 60 )。在您的程序的其他地方是否定义了名为 SAMPLERATE 的宏是完全不相关的。这种宏的存在(或不存在)没有任何影响。

相反,当一个宏被使用(并且宏被扩展)时,该扩展的结果被重新扫描以供其他宏扩展。因此,重要的是 SAMPLERATE 是否在使用 ONE_MINUTE 时定义。

关于c - 在 C 中的新 #define 中使用先前定义的 #define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21030041/

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