Why does GCC allow use of round() in C++ even with the ansi and pedantic flags?

前端 未结 3 505
温柔的废话
温柔的废话 2021-01-18 11:28

Is there a good reason why this program compiles under GCC even with the -ansi and -pedantic flags?

#include 

int mai         


        
相关标签:
3条回答
  • 2021-01-18 12:06

    I believe that the Standards specify what symbols are required to be defined and in which header they are defined. I do not believe that the Standards state that no other symbols may be defined. More to the point, std::round() will not be defined by a free symbol called round() can be defined.

    0 讨论(0)
  • 2021-01-18 12:10

    I might be off base here but doesn't gcc's -ansi flag apply to the code constructs (ie, disable GCC language extensions) rather than switching all libraries into strict ANSI compliant mode as well?

    0 讨论(0)
  • 2021-01-18 12:20

    This is a bug. It's been around for a surprisingly long while. Apparently, there has not been enough of a collective desire to fix it. With a new version of C++ just around the corner which will adopt the C99 functions from math.h, it seems unlikely it will ever be fixed.

    0 讨论(0)
提交回复
热议问题