gpt4 book ai didi

visual-studio - C 错误 - 宏 "max"需要 2 个参数,但只给出 1 个

转载 作者:行者123 更新时间:2023-12-03 00:55:48 25 4
gpt4 key购买 nike

尝试编译以下代码时:

template <class T>
struct scalar_log_minimum {
public:
typedef T value_type;
typedef T result_type;
static
result_type initial_value(){
return std::log(std::numeric_limits<result_type>::max());
}
static
void update(result_type& t, const value_type& x){
if ( (x>0) && (std::log(x)<t) ) t = std::log(x);
}
};

我收到以下错误:

function_ext.hpp:55:59:宏“max”需要 2 个参数,但只给出 1 个

这里的“max”不是宏,对吧?那么这个错误是什么呢?顺便说一句,我正在使用 Visual Studio 2005。

55:59 是什么意思 - 55 是行号 59?

最佳答案

我发现在包含 windows.h 后遇到的许多 #define 非常令人不安(不仅是 max 和 min,而且如果我没记错的话,我对其他通用词(如 Rectangle)也遇到了问题)。因此,我养成了只在绝对必要时才包含 windows.h 的习惯,而不是在头文件中。这减少了少量特定于平台的 C++ 文件的麻烦。

不幸的是,一些boost库(我相信thread和asio)确实在它们的头文件中包含了windows.h,而且我仍然时不时地遇到这种愚蠢的问题。

对于导致问题的其余情况,我的解决方案是在包含头文件后 #undef 有问题的符号。

关于visual-studio - C 错误 - 宏 "max"需要 2 个参数,但只给出 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/518517/

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