我定义了不在课堂上的函数

#define BlendLight(b1, b2)  std::max(b1, b2)


然后在课堂上我试图使用它:

float someFunk(float x, float y)
{
 return BlendLight(x,y); //Error here - BlendLight marked red (
}


我得到错误:预期的标识符

我尝试在Visual Studio 2010中进行编译
std :: max()标头已包含/我有添加算法,但仍然存在错误(((

最佳答案

目前的代码并不是错误的。您最有可能忘记了

#include <algorithm>


这是在其中定义std::max的头文件。

另一种可能是您没有在要使用它的类的同一文件中定义BlendLight。在这种情况下,您必须#include定义了BlendLight的头文件。

除此之外,您应该知道定义的不是函数,而是预处理器宏。在C ++中,您应该为此任务使用适当的功能(也许inline),以便编译器可以进行类型检查:

#include <algorithm>
// ...
template <class T>
T BlendLight(T x, T y)
{
  return std::max(x, y);
}

关于c++ - 使用#define时出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8970762/

10-10 03:06