У меня есть код, использующий большие целочисленные литералы следующим образом:
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-битной платформе Windows с MinGW-w64 (gcc 5.1.0) - первое предупреждение, похоже, не появляется в моих 64-битных системах Linux, но второе (с суффиксом ll
) появляется на обоих.
-std=gnu++1z
? Можете ли вы показать минимальный рабочий пример и указать точную версию компилятора и флаги, которые вы используете? - person 5gon12eder   schedule 11.11.2015long long nanoseconds = 10; if(nanoseconds < 1000000000000ll ) std::cout<<1000000000000ll;
у меня работает вgcc5.2
с опцией-std=gnu++1z
- person jha-G   schedule 11.11.2015((long long)1000000) * 1000000
? - person Nate Eldredge   schedule 11.11.2015-Wlong-long
явно приводит к игнорированию диалекта языка. - person Praetorian   schedule 11.11.2015-pedantic
всегда включает-Wlong-long
и что предупреждение должно выдаваться, когда у вас включен ‹C ++ 11. Riot, извините за предложение отправить фиктивный отчет об ошибке. - person Praetorian   schedule 11.11.2015