// ( r24.C ) // その他の機能について // #include #include #define print( arg ) cout << arg << "\n" // マクロ定義はC言語と同じ #define concat( arg1,arg2 ) arg1 ## arg2 // C++では define 文は inline 関数指定にすること! inline void print2( char* arg ) { cout << arg << "\n" ; } void sub( char* aa[][2] ) { for ( int i=0;aa[i][0] != NULL;i++ ) cout << aa[i][0] << " " << aa[i][1] << endl ; } union A { // どれか1つの変数が有効になる構造体 int i ; double j ; char k[10] ; } ; static char* a[][2] = { "Katou","cmd1", "Yasui","cmd2",NULL } ; main() { sub( a ) ; print( concat( "katou"," kundesu" ) ) ; // katou kundesu print2( concat( "katou"," kundesu" ) ) ; A b ; b.i = 10 ; cout << "i : " << b.i << endl ; // i : 10 b.j = 20.0 ; cout << "j : " << b.j << endl ; // j : 20 strcpy( b.k,"KATOU" ) ; cout << "k : " << b.k << endl ; // k : KATOU cout << "i : " << b.i << endl ; // i : 1262572623 変な値が入っている } /* [結果] Katou cmd1 Yasui cmd2 [参考] return( v1 == v2 ) は等しければ1を返す、そうでなければ0を返す。 if ( xxx() == 0 ) は if ( ! xxx() ) でもよい。xxx() は何かの関数。 */