c - M_PI 不适用于 gcc --std=c11 但 --std=gnu11?

标签 c gcc c11

我注意到 M_PIc11 上不可用。通过查看 /usr/include/math.h 我可以看到 M_PI 定义为:

#if !defined(__STRICT_ANSI__) || ((_XOPEN_SOURCE - 0) >= 500)
...
#define M_PI 3.1415...
#endif 

此外在来自 glibcmath.h__STRICT_ANSI__ 替换为 __USE_MISC。我对此完全迷失了。

--std=c11math.h 中定义的常量之间有什么故事?

debian 发行版中我应该考虑使用哪个 libc

顺便说一句,M_PIc99gnu11中定义...

最佳答案

很简单:M_PI 未在标准 C 中定义。如果您想符合标准,请提供您自己的定义。

C 编译器不能在不破坏合法 C 程序的情况下引入此类常量(名称未保留,可用作标识符),因此,它们仅定义为扩展。

GCC 4.9 when used with -std=c99 doesn't define M_PI , 但是 does when used with -std=gnu99

关于c - M_PI 不适用于 gcc --std=c11 但 --std=gnu11?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29264462/

相关文章:

c - 什么时候函数会加载到内存中?

c - PCRE 的 PCRE_PARTIAL 的 Perl 等价物是什么?

c - 使用 memmove 时发生总线错误

gcc - 文件 ld-linux-x86-64.so.2 中未定义版本 GLIBC_PRIVATE

c++ - -fshort-wchar 和 std::wstring - 段错误

c - 使用 fscanf() 读取文本文件时出错

c - 在 C11 中链接翻译单元的规则是什么?

c++ - 奇数链表表示

c - 如果使用 IOCP 进行基本信号传输,传递给 CreateIoCompletionPort 的句柄是什么?

c - C 中指针到整数的转换