gpt4 book ai didi

c++ - gcc3 和 gcc4 关于未初始化变量的区别

转载 作者:行者123 更新时间:2023-11-30 02:11:51 24 4
gpt4 key购买 nike

我们有一组 C++ 代码,正在从基于 RHEL4 的发行版移植到基于 RHEL-5 的发行版。以前用g++3.4.3编译,现在用g++4.1.2编译。结果发现有未初始化的本地POD变量正在使用,这导致新环境下的失败——这并不奇怪,因为 C++ 规则说本地 POD 结构未初始化,因此是随机的。

我正在寻找一个解释,说明为什么在使用 3.4.3 编译时这并没有打扰我们,但现在正在对 4.1.2 造成严重破坏。是否有一个模糊的设置有助于初始化本地 POD 变量的 gcc3 规范?

最佳答案

顾名思义,未定义的行为是未定义的。编译器不必解释他们为什么做他们所做的事情,他们不必始终如一地做一件事,也不必为他们所做的事情找一个理由。 p>

编译器通常对待未定义行为的方式是忽略它。从来没有 GCC 开发人员坐下来说“让我们为 GCC 如何处理未初始化的变量编写一些代码”。无论他们发生什么事,都是由于 GCC 中的所有其他代码失败而导致的。所以新版本的编译器可能会对未初始化的变量做不同的事情,不是因为编译器以不同的方式处理它们,而是因为它从未有意地处理它们根本

关于c++ - gcc3 和 gcc4 关于未初始化变量的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2745136/

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