我同意这可能会成为一个初学者的问题,但谷歌在搜索时绝对返回了0个不错的结果。我是一名C#程序员,直到现在才从未接触过C或C ++。
我刚刚开了一个C IDE,我被问到要使用哪个版本的C,默认选择99,虽然C11是最新版本,所以我的头说选择C11。
任何人都可以解释关键差异,我应该编写哪个版本,以及这将如何影响我的应用程序,它是否重要?
答案 0 :(得分:4)
C11具有某些编译器不完全支持的可选功能。因此,C99通常被认为更具便携性。
然而,C11增加了一些细节,例如结构中的匿名联合和其他期待已久的功能,包括原子变量,线程本地存储,静态断言等。
这些事情经常被记录下来。例如,添加的关键字在此keyword documentation中有明确标记(cppreference.com site有C文档,尽管它的名称)。
在一天结束时,作为初学者,你可能不应该太在乎。
我使用C11进行编码,这意味着我的项目需要更新的编译器 - 但差异几乎无关紧要,除非我在结构中使用内联函数或匿名联合 - 其他所有内容都可以使用库等实现(尽管需要更多工作) pthread
,编译器扩展,内联asm或OS特定API。
与某些语言不同,C标准努力保持向后兼容性 - 即使总有例外证明该规则,例如“澄清”会排除先前对该语言的解释。这种特性的一个很好的例子是C版本之间inline
关键字的解释(您可能会或可能不会注意到)。
因此,如果该项目需要C11特定功能,则默认使用C99并仅将项目切换到C11。