Ich habe einige Code unter Verwendung der großen Ganzzahlliterale wie folgt:Wie lange lange Integer-Konstante Warnung von GCC zum Schweigen
if(nanoseconds < 1'000'000'000'000)
Dies gibt der Compiler integer constant is too large for 'long' type [-Wlong-long]
warnen. wenn ich es aber leider zu:
if(nanoseconds < 1'000'000'000'000ll)
... ich stattdessen die Warnung use of C++11 long long integer constant [-Wlong-long]
bekommen.
Ich möchte diese Warnung nur für diese Zeile deaktivieren, aber ohne Deaktivieren -Well-lang oder -Wno-Long-Long für das gesamte Projekt verwenden. Ich habe versucht, es mit zu umgeben:
aber das scheint hier mit dieser Warnung nicht zu arbeiten. Gibt es noch etwas, das ich ausprobieren kann?
Ich baue mit -std=gnu++1z
.
Edit: minimal Beispiel für die Kommentare:
#include <iostream>
auto main()->int {
double nanoseconds = 10.0;
if(nanoseconds < 1'000'000'000'000ll) {
std::cout << "hello" << std::endl;
}
return EXIT_SUCCESS;
}
Gebäude mit g++ -std=gnu++1z -Wlong-long test.cpp
gibt test.cpp:6:20: warning: use of C++11 long long integer constant [-Wlong-long]
sollte ich erwähnen, das auf einem 32-Bit-Plattform ist Windows mit MinGW-w64 (gcc 5.1.0) - Die erste Warnung scheint auf meinen 64-Bit-Linux-Systemen nicht zu erscheinen, aber die zweite (mit dem Suffix ll
) erscheint auf beiden.
ich diese Warnung nicht reproduzieren kann und es auch macht keinen Sinn, warum sollten C++ 11-Features nicht mit '-std = gnu ++ 1z' verfügbar sein? Können Sie ein minimales Arbeitsbeispiel zeigen und Ihre genaue Compiler-Version und die verwendeten Flags angeben? – 5gon12eder
'lange lange Nanosekunden = 10; if (nanoseconds <1000000000000ll) std :: cout << 1000000000000ll; 'funktioniert für mich in' gcc5.2' mit der Option '-std = gnu ++ 1z' – gjha
Ich habe die Frage mit einem minimalen Beispiel und einer Befehlszeile aktualisiert . Ich stimme zu, dass es keinen Sinn macht, vor der Verwendung von C++ 11-Funktionen in dieser Situation zu warnen. – Riot