gcc (http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html) のfunciton属性を探していて、returns_twice
属性が見つかりました。ファンクション属性returns_twice
私は、関数が2回返すことができる場合は絶対に無駄です...私は上記のvfork()
とsetjmp()
をすばやく検索しましたが、使用可能なシナリオがどのように見えるかはわかりません。ビット?
gcc (http://gcc.gnu.org/onlinedocs/gcc-4.7.2/gcc/Function-Attributes.html) のfunciton属性を探していて、returns_twice
属性が見つかりました。ファンクション属性returns_twice
私は、関数が2回返すことができる場合は絶対に無駄です...私は上記のvfork()
とsetjmp()
をすばやく検索しましたが、使用可能なシナリオがどのように見えるかはわかりません。ビット?
setjmp
機能は、次のようなあなたが最初のラベルを設定するときsetjmp
から復帰した後、あなたが実際にそれにジャンプするたびになり、(goto
意味で)ラベルの作成に似ています。
あなたが毎日のプログラミングでsetjmp
を使用するべきではありません。または実際には... にすべてを使用しないでください。これは期待される実行フロー(多くの場合、goto
のような)を破る非常に低レベルのコマンドであり、特にC++では、あなたが期待できる不変量の大部分です。
setjmp
を呼び出すと、リターンポイントとして、setjmp
コールの直後のコードで実行が継続されます。 (setjmp
の以前の呼び出しによって初期化ジャンプ緩衝液)longjmp
を呼び出し後のコードの中でいくつかの点で
は、(すなわち、コードが直ちにコールsetjmp
後)再びその同じ点から開始する実行を返します。
したがって、元の呼び出しは正常に戻り、任意の後の時刻に実行が戻ります(または少なくともがに戻ります)。
属性は、単にその事実をコンパイラに警告します。
'vfork()'と 'setjmp()'をゆっくり探します。 – alk