関数呼び出し
マクロも奥が深い。
#include <stdio.h> void show() { fprintf( stdout, "func\n" ); } #define show() fprintf( stdout, "macro\n" ); int main() { show(); (show)(); (viod)fgetc( stdin ); return 0; }
実行結果
macro func
関数名を「()」で括る事でマクロの展開が抑止されてるんかな。でコレが役に立つ場面は・・・。
// #define NOMINMAX 1 #include <windows.h> #include <limits> #include <stdio.h> int main() { double dMin = (std::numeric_limits< double >::min)(); (viod))fgetc( stdin ); return 0; }