我刚才读到:C维基百科条目.据我所知,有三种不同版本的C被广泛使用:C89,C99和C11.我的问题涉及不同版本的源代码的兼容性.假设我要编写一个程序(在C11中,因为它是最新版本)并导入一个用C89编写的库.根据C11规范编译所有文件时,这两个版本是否能够正常工作?
问题1:较新版本的C即旧C版本的C99,C11超集?我认为,超集我的意思是,根据较新的C规范编译时,旧代码将编译时没有错误和相同的含义.
我刚才读到,//在C89和C99中有不同的含义.除了这个功能,还是C89的C99和C11超集?
如果问题1的答案是否定的,那么我又得到了2个问题.
如何将旧代码"移植"到新版本?有没有解释这个程序的文件?
使用C89或C99或C11更好吗?
感谢您的帮助.
编辑:将ISO C更改为C89.
较新版本的C即C99,C11超级旧C版本?
两者之间存在许多差异,既大又微妙.大多数更改都添加了新功能和库.C99和C11不是C90的超集,尽管为确保向后兼容性做了大量工作.然而,C11主要是C99的超集.
如果代码写得不好,从C90移植时仍旧旧代码可能会中断.特别是各种形式的"隐式int"和隐式函数声明都被禁止使用C99语言.C11禁止了这个gets功能.
完整的更改列表可以在pdf的C11草案页面13中找到,其中"第三版"是指C11,"第二版"是指C99.
如何将旧代码"移植"到新版本?有没有解释这个程序的文件?
我不知道任何这样的文件.如果您有良好的代码,移植很容易.如果你有腐烂的代码,移植将是痛苦的.至于实际的移植程序,如果您了解C99和C11的基础知识将很容易,因此最好的办法是找到一个可靠的学习资源来解决C99/C11问题.
从C99到C11的移植应该毫不费力.
使用C89或C99或C11更好吗?
最好使用C11,因为这是当前的标准.C99和C11都包含各种"语言错误修复",并引入了新的有用功能.