int main(int argc, char* argv[])
{
char szBuffer[512];
char *a;
a = "abcd";
wsprintfA( szBuffer, "***%""s""***", a ); printf( "%s\n", szBuffer );
wsprintfA( szBuffer, "***%""8s""***", a ); printf( "%s\n", szBuffer );
wsprintfA( szBuffer, "***%""-8s""***", a ); printf( "%s\n", szBuffer );
wsprintfA( szBuffer, "***%""08s""***", a ); printf( "%s\n", szBuffer );
return 0;
}
よくある計算マクロ
#define add( a, b ) a += b// *********************************************************// エントリボイント// *********************************************************
int main(int argc, char* argv[])
{
int x = 10;
add( x, 10 );
// 変換すると x += 10; です
return 0;
}
トークンの一部を置き換えるマクロ (トークン連結演算子 ##)
#define idrep( n ) printf( "%d\n", x##n );// *********************************************************// エントリボイント// *********************************************************
int main(int argc, char* argv[])
{
int x1 = 1;
int x2 = 2;
int x3 = 3;
idrep( 2 );
return 0;
}
int main(int argc, char* argv[])
{
int x1 = 1;
int x2 = 2;
int x3 = 3;
printf( "%d\n", x2 );;
return 0;
}
いかなるステートメントが含まれてても良いです
#define mymax(x,a,b,c) \
if ( a <= b ) { \
if ( b <= c ) { \
x = c; \
} \
else { \
x = b; \
} \
} \
else { \
if ( a <= c ) { \
x = c; \
} \
else { \
x = a; \
} \
}
// *********************************************************// エントリボイント// *********************************************************
int main(int argc, char* argv[])
{
int x;
mymax(x,20,100,70)
printf( "%d\n", x );
return 0;
}