我定义了不在课堂上的函数
#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/