、私は非常に奇妙な問題がzmqとmsgpackを使用しているこの非常に簡単C programを実行しようとしてい増加しません。カウンター変数()`マクロは
しかしclinet.c:39
であっserver.c
に問題、 はありませんが、このmsgpack_pack_int (&mpkg, i);
あるとi
の値は0
としてピックアップされると、各反復で変更されません ようです。私は (例えば、 i
へのポインタを作って、それを関数などに分割しようとしました。) 何も役に立たないようです。私はmsgpack_pack_int()
が マクロであることを知ることができますが、なぜそれがこのような振る舞いを導入し、何ができるのですか? 私はそれを克服するのですか? 私はgcc
とclang
で-Werror -Wall
を試しましたが、 は何も警告になりません;(どちらかといえば、これはインライン関数に展開されているので) のマクロを変更する可能性があります。 *
私は、私もこれを試してみました
それと期待通りi
増分をデバッグしようとした、そしてそれはとにかく同じことをするでしょう:。
void pack (msgpack_packer *p, msgpack_sbuffer *b) {
static volatile int i = 0;
printf("\ni=%d\n", i);
msgpack_packer_init (p, b, msgpack_sbuffer_write);
msgpack_pack_array (p, 2);
msgpack_pack_int (p, i++);
msgpack_pack_str (p, "/i/am/a/clinet/");
}
は私も異なることになっていた何かを試してみましたが、ここには運がどちらか -
がint count (void) {
static int i = 0;
i += 1; return i;
}
は誰もが見ることができる、なぜこれが起こるんだろうか?
アップデート1:また、私は 、最適化フラグなしmsgpackライブラリ自体を再コンパイルしており、それはどちらかの動作を変更しませんでした。
更新2: git repoからmsgpackをインストールしましたが、私はまだ同じ問題があります。
valgrindもあまり役に立ちません - https://gist.github.com/1222962 – errordeveloper