Dlaczego GCC zezwala na używanie round () w C ++ nawet z flagami ansi i pedantic?
Czy istnieje dobry powód, dla którego ten program kompiluje się w GCC nawet z-ansi
i-pedantic
flagi?
#include <cmath>
int main (int argc, char *argv [])
{
double x = 0.5;
return static_cast<int>(round(x));
}
To kompiluje czysto (bez ostrzeżeń, nawet)g++ -ansi -pedantic -Wall test.cpp -o test
.
Widzę dwa problemy:
round()
nie powinien być dostępny dla C ++ w trybie zgodnym z ISO (ponieważ pochodzi z C99)Nawet jeśliround()
były dostępne w tym przypadku, tak powinno być tylko zstd
przestrzeń nazwCzy się mylę?