桜、抹茶、白、日記

名古屋市在住のC++使いのcoderの日記だったもの。

関数呼び出し

マクロも奥が深い。

 #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;
}