C マクロ 新しいページはコチラ

提供: yonewiki
移動: 案内, 検索
(#define)
(#define)
24行: 24行:
 
#define __MY_MACRO__
 
#define __MY_MACRO__
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
 +
 +
マクロ変数には置き換えるべき値を代入することができて、プログラムソース中のマクロ変数をプログラムトークン処理に基づいて、一致する変数を代入された値に置き換えることができます。
 +
 +
 +
例えば、__MY_MACRO__ を数値50に置き換える場合は
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#define __MY_MACRO__ 50
 +
int main(){
 +
    int nMacroValue;
 +
    nMacroValue = __MY_MACRO__ * 10;
 +
}
 +
</syntaxhighlight>
 +
 +
というプログラムはプリプロセス処理によって
 +
 +
<syntaxhighlight lang="cpp" line start="1">
 +
int main(){
 +
    int nMacroValue;
 +
    nMacroValue = 50 * 10;
 +
}
 +
</syntaxhighlight>
 +
 +
に置き換えられ、nMacroValueの値は500になります。更に __MY_MACRO1__ に代入する値を 20 + 30 とした 同じ50でも __MY_MACRO2__ にカッコをつけて ( 20 + 30 ) にした場合とでは置き換え処理が異なるだけでなく、計算結果にも影響します。
 +
 +
 +
具体的には以下の通りの違いになります。
 +
<syntaxhighlight lang="cpp" line start="1">
 +
#define __MY_MACRO__ 50
 +
#define __MY_MACRO1__ 20 + 30
 +
#define __MY_MACRO2__ ( 20 + 30 )
 +
int main(){
 +
    int nMacroValue;
 +
    nMacroValue = __MY_MACRO__ * 10;
 +
    nMacroValue1 = __MY_MACRO1__ * 10;
 +
    nMacroValue2 = __MY_MACRO2__ * 10;
 +
}
 +
</syntaxhighlight>
 +
 +
<syntaxhighlight lang="cpp" line start="1">
 +
int main(){
 +
    int nMacroValue;
 +
    nMacroValue = 50 * 10;//500
 +
    nMacroValue1 = 20 + 30 * 10;//積の計算が優先されるため 20 + 300 で 320
 +
    nMacroValue2 = ( 20 + 30 ) * 10; // カッコが優先さえrて 50 * 100 で500
 +
}
 +
と上記のように変換されます。
  
 
==='''#undef'''===
 
==='''#undef'''===

2015年3月19日 (木) 00:00時点における版



個人用ツール
名前空間

変種
操作
案内
ツールボックス