-2

私は次のものを持っています...

int main(){

      cout<<"Before subroutine"<<endl;
      int returnvalue = subroutine();
      cout<<"After subroutine"<<endl;

}

int subroutine(){

      cout<<"Into subroutine"<<endl;
      /*subroutine does its work

        subroutine finishes its work*/
}       

これで、上記が機能します。つまり、サブルーチンが終了した後に「サブルーチンの後」を見ることができます。

ただし、行をコメントアウトすると

cout<<"Into subroutine"<<endl;

ではsubroutine()、サブルーチンが実行されていないようです。「サブルーチンの後」はまったく見られません。

これはバグのようです。これは解決策がある既知の問題ですか?

4

2 に答える 2

1

サブルーチンは、何の効果もないため、コンパイラによって最適化される可能性があります。

ただし、これは理由を説明していません

cout<<"After subroutine"<<endl;

実行されません。よろしいですか?サブルーチンと「After subroutine」の行の両方にブレークポイントを配置してみてください。

もちろん、サブルーチンへの復帰は絶対に必要です。

于 2013-07-09T08:52:07.623 に答える