0

プログラム内の関数を並べ替えるコンパイラ/リンカーの最適化を無効にする方法は? たとえば、次のような 3 つの機能があるとします。

    void A (){};
    void B (){};
    void C (){};

ビルド後、これらの関数の順序を変更して、B がメモリ内で最初に、C が 2 番目、A が 3 番目になるようにすることができます。

GCC には、トリックを実行するオプション「no-toplevel-reorder」があります。

-fno-toplevel-reorder

トップレベルの関数、変数、および asm ステートメントを並べ替えないでください。入力ファイルに表示されるのと同じ順序で出力します。このオプションを使用すると、参照されていない静的変数は削除されません。このオプションは、特定の順序に依存する既存のコードをサポートすることを目的としています。新しいコードでは、属性を使用することをお勧めします。

MS C++ の類似物はありますか?

4

1 に答える 1

1

#pragma code_seg("segname$tag"); を使用して実行できます。

于 2012-11-26T15:32:49.277 に答える