17
|
Iwillnotexist Idonotexist · 技术社区 · 6 年前 |
1
9
我同意标准并没有明确禁止参数向量的元素成为彼此的别名。我不认为可修改性和价值保留条款与这一立场相矛盾,但它们确实向我表明,委员会没有考虑使用别名的可能性。
事实上,这正是我认为委员会甚至没有考虑这种可能性的原因。如果他们这样做了,那么他们肯定至少会包含一个脚注,以达到同样的效果,或者明确指定参数字符串都是不同的。
我倾向于认为这个细节避免了委员会的注意,因为在实践中,实现确实提供了不同的字符串,而且因为程序修改它们的参数字符串(尽管修改)是很少见的。
但是,除非发布了此类解释,否则严格的一致性不允许您依赖
先验的
在
|
2
6
它在常见的*nix平台(包括linux和mac操作系统,可能还有freebsd)上的工作方式是
但是,c不需要这种实现。真正的偏执狂可能想在修改字符串之前复制每个字符串,如果内存有限且循环过多,则可能跳过复制。
|
3
2
作为一个数据点,我在几个系统上编译和运行以下程序。(免责声明:这些程序旨在提供一个数据点,但正如我们所看到的,它们是这样做的。 不 最后按说明回答问题。)
我尝试过的每一个地方(在macos和多种unix和linux下)都会打印
因为第二行从来没有
当然,这个测试
不
证明字符串
(我说这并不奇怪,因为如果你想想
为了以防万一,我修改了第一个程序:
结果没有变化。
所有这些都表明,我同意这个问题看起来像是标准中的疏忽或小事。我不知道有任何条款可以保证字符串是由
|
msc · 为什么编译器不给出一个冲突的错误? 7 年前 |
Vikas Yadav · C11相关语言正确性 7 年前 |
Dror K. · 用%p打印空指针是未定义的行为? 7 年前 |
anol · 符合标准的字符串是否可以长于SIZE_MAX字符? 8 年前 |
pablo1977 · 函数调用中的格式良好的配对 8 年前 |
P.P · 评估指向对象存储之外的指针是否未定义? 9 年前 |