g++ 4.9.4 缺少 LLONG_MAX?

Zha*_*dze 5 c++ g++ c++11

我试图调试这个简单的大代码:

\n\n
#include "limits.h"\n\nint main()\n{\n  long long a = LLONG_MAX;\n\n  return 0;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果我像这样运行它

\n\n
g++ test.cpp\n
Run Code Online (Sandbox Code Playgroud)\n\n

我明白了

\n\n
test.cpp: In function \xe2\x80\x98main\xe2\x80\x99:\ntest.cpp:5:17: error: \xe2\x80\x98LLONG_MAX\xe2\x80\x99 undeclared (first use in this function)\nlong long a = LLONG_MAX;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我检查了这个常量的参考资料,其中写道:

\n\n
\n

LLONG_MINLLONG_MAXULLONG_MAX是为符合 1999 年或更高版本的 C 标准(仅包括 2011 年以来的 C++ 标准:C++11)的库定义的。

\n
\n\n

所以我尝试设置-std=c++11但没有帮助。有什么建议么?

\n\n

PS 相同的代码在其他机器上使用 g++ 5.4.0 可以正常编译

\n\n

更新: LONG_MAX 可见(但 LLONG_MAX 不可见),机器是 debian4

\n

tho*_*mas 3

在 C++ 中,您应该使用std::numeric_limits

#include <limits>
...
std::numeric_limits<long long>().max();
Run Code Online (Sandbox Code Playgroud)

如果您想要 c 定义,请使用#include <climits>

  • 这些都是解决方法;他们不回答这个问题。 (4认同)