StrawberryPerlで取得したWindows用のg++のバージョンから奇妙な動作が発生しました。これにより、returnステートメントを省略できました。
boundTag
:と呼ばれる2つのポインターで構成される構造を返すメンバー関数があります。
struct boundTag Box::getBound(int side) {
struct boundTag retBoundTag;
retBoundTag.box = this;
switch (side)
{
// set retBoundTag.bound based on value of "side"
}
}
この関数は私にいくつかの悪い出力を与えました、そして私はそれがreturnステートメントを持っていないことを発見しました。戻るretBoundTag
つもりでしたが、実際にreturnステートメントを書くのを忘れていました。追加したら、return retBoundTag;
すべて問題ありませんでした。
しかし、私はこの関数をテストし、それから正しいboundTag
出力を得ました。今でも、returnステートメントを削除すると、g++は警告なしにコンパイルします。WTF?戻ると思いretBoundTag
ますか?