我有一些使用大整数文字的代码,如下所示:
if(nanoseconds < 1'000'000'000'000)
这会给编译器警告integer constant is too large for 'long' type [-Wlong-long]
。但是,如果我将其更改为:
if(nanoseconds < 1'000'000'000'000ll)
...我反而得到了警告use of C++11 long long integer constant [-Wlong-long]
。
我想仅针对这一行禁用此警告,但不禁用 -Wlong-long 或对整个项目使用 -Wno-long-long。我试过用以下方法包围它:
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wlong-long"
...
#pragma GCC diagnostic pop
但这似乎不适用于此警告。还有什么我可以尝试的吗?
我正在与-std=gnu++1z
.
编辑:评论的最小示例:
#include <iostream>
auto main()->int {
double nanoseconds = 10.0;
if(nanoseconds < 1'000'000'000'000ll) {
std::cout << "hello" << std::endl;
}
return EXIT_SUCCESS;
}
建设与g++ -std=gnu++1z -Wlong-long test.cpp
给予test.cpp:6:20: warning: use of C++11 long long integer constant [-Wlong-long]
我应该提到这是在 32 位平台上,带有 MinGW-w64 (gcc 5.1.0) 的 Windows - 第一个警告似乎没有出现在我的 64 位 Linux 系统上,但第二个(带有ll
后缀)出现在两者上。