C マクロのソースを表示
新しいページはコチラ
移動:
案内
,
検索
※このページではC言語にも存在していたという意味で記事タイトルがC マクロになっていますが、<br /> [[C PlusPlus|C++]]でも同様です。[[C PlusPlus|C++]]だけの機能がある場合は明記します。<br /> <br /> <big><big>'''マクロ'''</big></big> マクロはC++言語においては、プリプロセッサの中での変数を使ったプログラム全体のテキスト文字列の一括置換処理を行う処理のための命令を意味していて、#define ディレクティブによってマクロ変数を定義できます。 簡単な使い方から複雑な使い方であるものまで種々のマクロが存在するため、最初の基礎の理解だけに留めていると、複雑なマクロ変数や変数の定義であるマクロ宣言に出くわしたとき、理解に苦しむことになります。 <nowiki>#</nowiki>undef はマクロ変数を解放する(変数の定義を消去する)ためのディレクティブです。こちらは比較的使い方が簡単です。 ==='''#define'''=== まず、マクロの基本ですが、マクロ変数を定義するだけで、変数の中に入れる値を意識しない使い方は以下のとおりです。プログラム全体に関わる定数値処理や定型文法処理の切り替えが必要な時に活用することができます。サンプルでは一回だけの変換につかっているので実用的ではありませんが、変換の具体例を示すための強引なマクロ利用サンプルになっていることに留意して下さい。 '''<nowiki>#</nowiki>defeine マクロ変数名''' のように#defineの後の半角空白での区切りの後にマクロ変数名を記述することで定義できます。 具体的に __MY_MACRO__ というマクロ変数を定義する場合は以下のとおりとなります。 <syntaxhighlight lang="text"> #define __MY_MACRO__ </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; // カッコが優先されて 50 * 100 で500 } </syntaxhighlight> と上記のように変換されます。 ==='''#undef'''===
C マクロ
に戻る。
個人用ツール
18.188.91.70
このIPアドレスのトーク
ログイン
名前空間
ページ
議論
変種
表示
閲覧
ソースを表示
履歴表示
操作
検索
案内
メインページ
コミュニティ・ポータル
最近の出来事
最近の更新
おまかせ表示
ヘルプ
ツールボックス
リンク元
関連ページの更新状況
特別ページ