|
|
1
6
C++标准当然没有说什么来阻止这种情况发生。然而,在现实中,编译器通常是确定性的,所以给定相同的输入,它将产生相同的输出。 很少的 它们似乎假定构建机的特性反映了目标的特性,并基于构建环境中隐含的而不是显式声明的“输入”来改变它们的输出,例如通过编译器标志。也就是说,即使这样也相对不寻常。输出通常依赖于显式输入(输入文件、命令行标志等)
|
|
|
2
4
根据 在标准中,只要一个符合标准的程序(例如,没有未定义的行为)不能分辨差异,编译器就可以做任何它想做的事情。换句话说,只要程序产生相同的输出,标准中就没有禁止这种情况的限制。 从实用的角度来看,我不会使用这样的编译器来构建生产软件。我希望能够重新编译两年前发布的版本(使用相同的编译器等),并生成相同的机器代码。我不想担心我不能重现bug的原因是编译器今天决定做一些稍微不同的事情。 |
|
|
3
4
不能保证它们是一样的。同样根据 http://www.mingw.org/wiki/My_executable_is_sometimes_different
this post 这似乎解释了如何使它们相同。 |
|
|
4
1
|
|
AstralHex · 矩阵乘法代码工作不正常 9 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 9 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 9 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 9 月前 |