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'''=== |