FrontPage > C/C++ > X Toolkit > インクリメントについて

インクリメントについて

Xtを含め、数多くのマクロが存在するのでインクリメント等の処理を関数(マクロ)内で行わない方が良い。

元のソース:
XtSetArg(myArgs[i], XmNx, 10); i++;

プリプロセス処理後[gcc -E]:
((void)( (myArgs[i]).name = (((char*)&XtStrings[885])), (myArgs[i]).value = (XtArgVal)(10) )); i++;
その為、内部でインクリメントを記述すると
> XtSetArg(myArgs[i++], XmNx, 10);

プリプロセス処理後にはインクリメントを2回してしまう。
> ((void)( (myArgs[i++]).name = (((char*)&XtStrings[885])), (myArgs[i++]).value = (XtArgVal)(10) ));

1回インクリメントしているつもりが、 展開後には2回インクリメントされていると意図しない結果となってしまう。


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-08-24 (日) 16:19:57