setjmp

    2

    1答えて

    タイトルはすべてそれを言う。 <csetjmp>を含むと、longjmpとjmp_bufはstd名前空間に含まれますが、setjmpは含まれません。 MinGW4.5とMSVC10でこれを確認しました。 <csetjmp>ヘッダーを調べた後、私はこの選択の理由を理解できませんでした。私は常に<cheader>ファイルが<header.h>をネームスペースstdにラップしていると仮定していました。

    1

    2答えて

    setjmp/longjmpを使用して、ユーザーレベルのスレッドライブラリを宿題として実装する必要があります。これは私が書いたコードです: #include <signal.h> #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #inclu

    1

    1答えて

    私は、sigsetjmpとsiglongjmpを使ってセグメンテーションフォールトハンドラを書いています。シグナルハンドラに行くと、問題のある命令がスキップされるようにsiglongjmpを呼び出します。 問題は、私は再びSIGSEGVが発生し、同じハンドラに行きたいですが、今sigsetjmpはsigsetjmpをリセットする方法1. を返すのだろうか?ここで は私のコードです: #includ

    7

    2答えて

    g ++ 4.8.3のバグがいくつか発生したと私は確信していますが、 setjmp/longjmp。私は、次のfoo.cxxに問題の私のコードを単純化しています #include <setjmp.h> #include <string.h> // Changing MyStruct to be just a single int makes the compiler happy. stru

    2

    1答えて

    とは、pthread_cleanup_push /ポップを使用してコードの一部をコンパイルするとき、私はいくつかの警告を持っている - O2CFLAGS。 Makefile内のO2のcflagsを削除するだけで問題なくコンパイルできます。 これらのpthreadマクロでgcc最適化を使用することは禁じられていますか?私は人や文書で何かを見つけることができませんでした。ちなみに、スレッドの最後には何

    0

    1答えて

    通常、setjmpとlongjmpは呼び出しスタックを気にしません。代わりに関数はレジスタの保存と復元だけです。私はそのコールスタックを保存し、別の実行コンテキスト EnableFeature(bool bEnable) { if(bEnable) { if(setjmp(jmpBuf) == 0) { backup call stack } els