- スレを勃てるまでもないC/C++の質問はここで 22
301 :デフォルトの名無しさん[sage]:2014/07/13(日) 00:04:12.05 ID:SsDCNXiH - visual studio だと、これで行けるんですが。何でかな?
#include "stdafx.h" #define dbgprintf 1 ? (void)0 : (void) //(1) int func(){ return 1; } int _tmain(int argc, _TCHAR* argv[]){ dbgprintf("%d", func()); return 0; }
|
- スレを勃てるまでもないC/C++の質問はここで 22
303 :デフォルトの名無しさん[sage]:2014/07/13(日) 00:07:03.38 ID:SsDCNXiH - ↑のは間違いでした。↓こっちでも行ける理由が分りません。
それが知りたいのですが。 #include "stdafx.h" #define dbgprintf int func(){ return 1; } int _tmain(int argc, _TCHAR* argv[]){ dbgprintf("%d", func()); return 0; }
|
- スレを勃てるまでもないC/C++の質問はここで 22
306 :デフォルトの名無しさん[sage]:2014/07/13(日) 00:11:43.83 ID:SsDCNXiH - >>304
なるほど。そうすると、funcの戻り値はどうなるんですか? ("%d", func()); が ("1"); になって、この後どうなるんですか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
307 :デフォルトの名無しさん[sage]:2014/07/13(日) 00:15:05.28 ID:SsDCNXiH - >>305
int _tmain(int argc, _TCHAR* argv[]){ ("1"); return 0; } で動きました。 ("1"); の行は、実行に影響ないんでしょうか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
317 :デフォルトの名無しさん[sage]:2014/07/13(日) 10:39:54.60 ID:SsDCNXiH - カンマ演算子ググッようやくdbgprintfマクロの挙動わかりました。
有難うございました。 マクロ勉強中で、もう一つ教えてください。こんなマクロ見つけたのですが、 #define eqstr(a, b) (*(a) == *(b) && strcmp(a, b) == 0) 文字列が等しいかどうか調べるだけなら、 #define eqstr(a, b) (strcmp(a, b) == 0) でいいと思うのですが、*(a) == *(b)は何ですか?
|
- スレを勃てるまでもないC/C++の質問はここで 22
319 :デフォルトの名無しさん[sage]:2014/07/13(日) 11:04:10.62 ID:SsDCNXiH - その時は、例えば
char a[]="1234"; char b[]="234"; とすると、 eqstr(a+1,b)は strcmp(a+1, b)==0で strcmp("234","234")==0で 等しいと判断されると思います。
|