gpt4 book ai didi

c++ - 未定义行为和 C++ 语言稳定性

转载 作者:行者123 更新时间:2023-12-03 06:55:58 25 4
gpt4 key购买 nike

我是 told #defining 语言关键字是未定义的行为。这与以下事实有何关系:

  1. 用户可以#define 名称不是他们代码中的关键字。
  2. 随着时间的推移,该语言可以获得新的关键字,这些关键字以前不是关键字。
  3. 用户应该能够使用新编译器编译旧代码,并在他们使用的任何构造不再受支持时获得编译时诊断,而不是未定义的行为。

#3 显然是我的假设,但我认为这个假设很重要,因为较新的编译器往往更好,并且“了解现行法律的全部范围”是一个理论上的法律假设,不适用于软件开发人员,我希望(如果编译器假设否则,它可以用它喜欢的任何未定义行为替换代码中的任何编译时错误。

最佳答案

#3 并非如此,也从未得到任何人的保证。虽然 C++ 委员会不喜欢创建不会大声破坏的向后不兼容性,但他们有时还是会这样做。

你不应该期待你没有被告知要期待的事情。

是的,对于那些#defined 该关键字的人来说,添加新关键字可能会悄无声息地中断。这是用户被告知为其 #define 名称使用 ALL_CAPS 的众多原因之一,因为关键字几乎肯定不会在 ALL_CAPS 中。

关于c++ - 未定义行为和 C++ 语言稳定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64227446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com