我相信在C99中,字符串文字的修改是未定义的行为。我没有该标准的副本,但确实有C1X(n1570)草案,该草案在6.4.5第7段中规定:



我发现了涉及该主题的Stack Overflow question,其中包含Jonathan Leffler的以下评论:



但是我也看到了很多关于字符串文字类型的讨论,以及它们是char[N]而不是const char[N]的事实。我收集到此决定是为了使现有代码的大部分不会中断。

谁能给我一个明确的答案。 C89中的字符串文字修改UB是吗?

最佳答案

是的,它们在C89中不可修改。

即使在K&R第二版中,也有关于字符串文字不变性的引号。

在ANSI C89基本原理中,有一个解释为什么它不可修改:

关于c - 字符串文字的修改是否符合C89标准的未定义行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10001202/

10-11 21:21