トップ  >  リファレンス  >  基本  >  プリプロセッサ  >  マクロ置換
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
マクロ置換


#defineは定数にニーモニック名を割り当てる事が出来ます。


書式:
#define ニーモニック名 置き換える定数



サンプルソース:
#define RADIUS         5
#define PI             3.14

#define CIR_STR        "円周"
#define CIR_AREA_STR   "円面積"
#define CIR_AREA_CAL   ( PI * RADIUS * RADIUS)

void OnInit(){

    Print( CIR_STR      , 2 * PI * RADIUS ); // 円周31.4   を表示
    Print( CIR_AREA_STR , CIR_AREA_CAL );    // 円面積78.5 を表示
}


引数付き#define



書式:
#define ニーモニック名(引数) 置き換える定数




引数上限は8つまでです。
サンプルソース:
#define PI             3.14

#define CIR_AREA_STR   "円面積"
#define CIR_AREA_CAL(r)   ( PI * r * r )


// 引数が8個の#define
#define TEST_PARA8( a1,a2,a3,a4,a5,a6,a7,a8)    (a1+a2+a3+a4+a5+a6+a7+a8)
// エラーになる。引数が9個の#define(引数上限は8個まで)
#define TEST_PARA9( a1,a2,a3,a4,a5,a6,a7,a8,a9) (a1+a2+a3+a4+a5+a6+a7+a8+a9)


void OnInit(){

    Print( CIR_AREA_STR , CIR_AREA_CAL(5) ); // 円面積78.5 を表示
}


上記サンプルソースでは、置き換える定数の式PI * r * rを括弧で囲んでいますが、括弧に囲まなくてもエラーにはなりません。
しかし、#defineは単純に置換されるマクロなので、CIR_AREA_CAL(r)をの前後に演算子がある場合、演算子の優先順位によって意図しない演算になる可能性があります。
前後の演算子に影響を受けない様にする為、括弧で囲む事を勧めます。

#undef



書式:
#undef ニーモニック名




#undefは、#defineによるマクロ置換の取消します。

管理人の勝手なコメント:
リファレンスマニュアルには#undefが使える様な記載がありましたが、実際に使用すると#undefプリプロセッサはありませんとコンパイラに怒られます。
昔は使えたのかもしれません。
スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system