我习惯了旧式C和最近才开始探索c99功能.我只有一个问题:如果我在我的程序中使用c99,c99标志gcc并将其与之前的c99库链接,我的程序是否会成功编译?
那么,我应该坚持旧的C89还是进化?
我相信他们在这方面是相容的.只要您正在编译的内容不会踩到任何新的好东西.例如,如果旧代码包含,enum bool { false, true };则您遇到麻烦.作为一个类似的恐龙,我正在慢慢拥抱C99的美妙新世界.毕竟,它现在已经潜伏了大约10年;)
你应该进化.谢谢收听 :-)
实际上,我会扩展它.
你是对的,C99已经存在了很长一段时间.您应该(在我看来)将该标准用于遗留代码以外的任何其他内容(您只修复错误而不是添加新功能).遗留代码可能不值得,但您应该(与所有业务决策一样)进行自己的成本/收益分析.
我已经确保我的新代码与C1x兼容了 - 虽然我还没有使用任何新功能,但我确保它不会破坏.
至于要注意什么代码,标准的作者非常重视向后兼容性.他们的工作不是设计一种新语言,而是编纂现有的做法.
他们目前所处的阶段使他们在更新语言方面有更多的自由,但他们仍然遵循希波克拉底誓言的输出:"首先,不要伤害".
通常,如果您的代码被新标准破坏,编译器将被迫告诉您.因此,简单地编译代码库将是一个很好的开始.但是,如果您阅读C99基本原理文档,您会看到"安静更改"这一短语 - 这是您需要注意的.
这些是编译器中的行为变化,您不需要了解它们,如果您的应用程序开始表现奇怪,可能会引起很多焦虑和咬牙切齿.不要担心"c89的安静变化" - 如果它们是一个问题,你就会被它们咬伤.
顺便说一下,该文件是一本很好的读物,可以理解为什么实际标准会说出它所说的内容.