c - 哪些 C99 功能被认为是有害的或不受支持的

标签 c compiler-construction c99 c89

<分区>

我通常在 C89 中编写 C 代码,现在 C99 的一些特性(如 intxx_t__VA_ARGS__snprintf)非常有用,并且甚至可能至关重要。

在我将我的要求从 C89 提升到 C99 之前,我想知道哪些 C99 特性得到了广泛支持,哪些没有得到广泛支持,甚至被认为是有害的。

我知道我们可以只检查我们的目标编译器支持,但这会大大缩小我们的支持范围,因为这是针对开源软件的,我希望获得更广泛的支持。

例如,我们使用 Solaris (suncc) 编译器和 gcc,但我们可能会移走其他编译器,同时我们可以通过很少的努力保持兼容性。

例如,我从未在 Windows 上工作过,也不了解 Windows 编译器,但保持 Windows 兼容性会很好。

最佳答案

goto 仍然是 considered harmful .


不知何故,我收集到了 4 反对票。我提出上面的陈述是为了增加趣味性,我对它背后的概念只有 30% 的认真态度。

我希望反对票来自不了解编程语言历史的年轻人。并非每一个 goto 都是邪恶的,但是——与我处理过的 100% 纯正的意大利面条代码(数百万行 FORTRAN 66)相比——替换它是合理且高效的与结构化语句(forwhiledo .. whileswitch) 尽可能。但有时 goto 可以避免复杂性,例如用于跳出多个嵌套循环的额外标志变量。

关于c - 哪些 C99 功能被认为是有害的或不受支持的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1898890/

相关文章:

c - 密码功能错误

c - 我应该禁用 C 编译器签名/未签名不匹配警告吗?

c - 在 C 中记录程序的标准方法是什么?

c - 具有定义宽度的整数类型

带有 _TIME_、_FILE_、_FUNCTION_、_LINE_ 的自定义打印功能

c - 使用单指针代替双指针

assembly - 用于学生项目的小型汇编翻译器

c - main函数的返回值范围

strcpy 之后 char[] 具有重复值

compiler-construction - 手工创建的 OCaml AST 的无限值(value)