我试图调试这个简单的大代码:
\n\n#include "limits.h"\n\nint main()\n{\n long long a = LLONG_MAX;\n\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n如果我像这样运行它
\n\ng++ test.cpp\nRun Code Online (Sandbox Code Playgroud)\n\n我明白了
\n\ntest.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;\nRun Code Online (Sandbox Code Playgroud)\n\n我检查了这个常量的参考资料,其中写道:
\n\n\n\n\n\n
LLONG_MIN,LLONG_MAX和ULLONG_MAX是为符合 1999 年或更高版本的 C 标准(仅包括 2011 年以来的 C++ 标准:C++11)的库定义的。
所以我尝试设置-std=c++11但没有帮助。有什么建议么?
PS 相同的代码在其他机器上使用 g++ 5.4.0 可以正常编译
\n\n更新: LONG_MAX 可见(但 LLONG_MAX 不可见),机器是 debian4
\n在 C++ 中,您应该使用std::numeric_limits
#include <limits>
...
std::numeric_limits<long long>().max();
Run Code Online (Sandbox Code Playgroud)
如果您想要 c 定义,请使用#include <climits>