gpt4 book ai didi

c++ - 我是否检查带或不带括号的宏函数的存在?

转载 作者:太空狗 更新时间:2023-10-29 19:57:24 26 4
gpt4 key购买 nike

在我定义一个宏函数之前,我可以检查它是否已经存在
(这避免了覆盖以前的定义)。

我可以这样实现检查和定义:

#ifndef MACRO(X)
#define MACRO(X) FUNCTION(X)
#endif

或者像这样:

#ifndef MACRO
#define MACRO(X) FUNCTION(X)
#endif

当函数已经定义时,两者似乎都有效。
那么,哪个是正确的?哪个更受欢迎?

最佳答案

没有。

标准规定 #ifndef 等同于 #if !defined,并且 defined 的参数必须是一个(可能用括号括起来的) ) 标识符。标识符中不能有括号,因此 defined MACRO(X) 不是允许的形式。 defined 的这种使用会导致未定义的行为,因此它不可移植。

关于c++ - 我是否检查带或不带括号的宏函数的存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143657/

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