3

あなたに質問があります。main() 関数が終了する前または後に関数を使用できるかどうかを調べる必要があります。C 言語の例が見つかりません。アドバイスや例を教えてください。どうもありがとう。

4

4 に答える 4

8

GCC を使用している場合は、コンストラクター/デストラクター関数を作成できます。

このconstructor属性により、実行が開始される前に関数が自動的に呼び出されますmain()。同様に、このdestructor属性により、関数がmain()完了またはexit()呼び出された後に自動的に呼び出されます。これらの属性を持つ関数は、プログラムの実行中に暗黙的に使用されるデータを初期化するのに役立ちます。

サンプル:

void __attribute__ ((constructor)) ctor() { printf("1"); }
void __attribute__ ((destructor))  dtor() { printf("3"); }
int main() { printf("2"); }

出力:

123
于 2013-05-10T13:24:18.130 に答える
8

プログラムの終了時に呼び出される関数を登録する C 言語atexit( C++ 言語) には関数があります。std::atexit

于 2013-05-10T13:19:24.997 に答える
0

この問題には多くの解決策があり、そのうちのいくつかが提供されています。

  • 静的 CRT 初期化/終了 (静的オブジェクト デストラクタ「フック」)
  • メインの名前を変更し、実際のメインでラップする
  • atexit() でフックを登録する

あなたが何をしようとしているのか、あるいは質問の意図が「できますか」なのか、それとも「それをしても安全ですか」ということなのかさえ明確ではありませんか? 明確にできますか?

于 2013-05-10T13:25:25.720 に答える