![]() |
1
12
C标准尝试在
默认情况下,gcc不会警告
有人可能会说这是一个bug,但在默认模式下,gcc不是标准C的编译器,而是GNUC的编译器 精心选择的命令行选项可以迫使gcc至少尝试一致。例如:
哪里
|
![]() |
2
2
当然 无效的 标准C代码在特定编译器中可能是合法的,它被称为 编译器扩展 . 这是真的,从 https://gcc.gnu.org/onlinedocs/gcc/Pointer-Arith.html
如果你需要你的代码是可移植的,坚持使用标准C总是一个好主意,但是如果你的代码只在一个特定的平台上运行,那么使用某些编译器扩展是没有害处的。 |
![]() |
3
0
C11标准n1570 S6.5.6/2:
C++的语言类似。 这绝对不是符合标准的行为。我想GCC团队已经知道了这一点。 答案是,兼容的编译器应该发出诊断,然后生成它喜欢(或不喜欢)的任何代码。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 4 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |