gpt4 book ai didi

c++ - 预处理器定义需要表达式的函数

转载 作者:行者123 更新时间:2023-11-30 01:17:05 25 4
gpt4 key购买 nike

我试过做这种定义:

#define Math.Pow(a,b) (int result=1; for (int i=0; i<b; i++) result*=a; return result;)

当我在代码中使用 Math.Pow(a,b) 时,出现错误:

expected an expression.

我试着把这个定义放在另一个函数里,比如

int Power(int a, int b)
{int result=1; for (int i=0; i<b; i++) result*=a; return result;}

然后

#define Math.Pow(a,b) (Power(a,b))

但我得到了同样的错误。

最佳答案

您不能在宏名称中放置 . 字符。即使可以,宏中的 return 语句也不会从宏本身返回值。请记住,宏只是调用编译器之前的文本替换,因此 return 将应用于调用代码,这在这种情况下并不是您真正想要的。

要执行您正在尝试的操作,请改用模板化函数:

struct Math
{
template<typename T>
static T Power(T a, T b)
{
T result = 1;
for (int i = 0; i < b; ++i)
result *= a;
return result;
}
};

或者:

namespace Math
{
template<typename T>
T Power(T a, T b)
{
T result = 1;
for (int i = 0; i < b; ++i)
result *= a;
return result;
}
}

无论哪种方式,您都可以这样调用它:

Math::Power(value1, value2);

关于c++ - 预处理器定义需要表达式的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25319335/

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