我看过编译器选项GNU99和C99.它们有什么不同?有详细的文档吗?(Clang、Xcode、Mac OS X)

推荐答案

不同标准模式之间的差异

clang支持-std选项,该选项更改clang使用的语言模式.C支持的模式有c89、gnu89、c94、c99、gnu99以及这些模式的各种别名.如果没有指定-std选项,clang默认为gnu99模式.

所有c*和gnu*模式之间的差异:

  • c*模式定义__STRICT_ANSI__.
  • 特定于目标的定义(不带下划线前缀,如"linux")是在gnu*模式下定义的.
  • 在gnu*模式下,三角图默认为关闭;它们可以通过-trigraphs选项启用.
  • 解析器在gnu*模式中将"asm"和"typeof"识别为关键字;变型__asm____typeof__可在所有模式下识别.
  • 在某些平台上,默认情况下在gnu*模式下可以识别Apple"blocks"扩展;它可以在任何模式下使用-fblocks选项启用.

更多链接

C++相关问答推荐

以前版本的tty_ldisc_ops.ioctl()是否也需要文件参数?

警告:C++中数组下标的类型为‘char’[-Wchar-subpts]

不会停在空格或换行符上的错误

X86/x64上的SIGSEGV,由于原始内存访问和C中的DS寄存器之间的冲突,在Linux上用TCC编译为JIT引擎

在我的代码中,我需要在哪里编写输出函数?

这个C程序在工作中途停止获取输入.我收到分段故障(核心转储).我还是不知道问题出在哪里

如何编写一个for循环来计算C中各项的总和?

添加函数会 destruct 嵌入式C代码(无IDE)

使用nmake for程序比Hello World稍微复杂一些

C堆栈(使用动态数组)realloc内存泄漏问题

Wcstok导致分段故障

为什么GCC-O1优化破解了这个代码,为了一个GameBoy高级只读存储器而修改了VRAM的循环?

GETS()在C++中重复它前面的行

强制GCC始终加载常量(即只读),即使启用了优化

程序打印一些随机空行

'printf("%s", user_input)' 危险吗?

System V 消息队列由于某种原因定期重置

添加/删除链表中的第一个元素

如何修复数组数据与列标题未对齐的问题?

设置具有非零终止字符串的大整数