gpt4 book ai didi

c++ - 将宏重载为变量和函数

转载 作者:行者123 更新时间:2023-12-03 08:03:57 29 4
gpt4 key购买 nike

首先,有很多关于重载宏的帖子:

但是,他们都提出了有关可变参数宏的问题。

我想问的是以下情况是否可行:

#define FOO 3
#define FOO(a,b) a+b

int main() {
int a = FOO(0,1);
int b = FOO;
std::cout << a + b;
return 0;
}

我希望它也能在 clang 上运行。

最佳答案

不,宏没那么聪明。它们是由预处理器执行的简单文本替换。

以多一组括号为代价,您可以重载函数,例如:

int foo () { return 3; }
int foo (int a, int b) { return a + b; }

int main ()
{
int a = foo (0, 1);
int b = foo ();
}

如果您希望您的 foo 能够使用更广泛的类型,请将它们设为模板。

关于c++ - 将宏重载为变量和函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73044391/

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