\r\n\r\n
マクロとは、プリプロセッサの命令であるコード片のことです。インライン関数は、プログラムの実行時間を最小限にするためのC++の拡張機能です。したがって、マクロとインライン関数の重要な違いは、マクロがプリプロセッサによってチェックされるのに対して、インライン関数はコンパイラによってチェックされることである。
マクロはプログラムの先頭に含まれ、ハッシュ記号が付きます。プログラムにマクロ名がある場合、マクロの内容に置き換わります。
1. 概要と主な違い 2. マクロとは 3. インライン関数とは 4. 横並びの比較 - 表形式でのマクロとインライン関数 5. まとめ
プリプロセッサーとは、ソースコードがコンパイラーを通過する前に処理するプログラムのことです。プリプロセッサのコマンドラインや命令を使って操作を行います。プログラムでは、プリプロセッサー命令はメインプログラムの前にソースプログラム内に配置されます。ソースコードがコンパイラを通過する前に、プリプロセッサーでプリプロセッサー命令がチェックされます。プリプロセッサー命令には#記号があります。他のステートメントと異なり、セミコロンで終わることはありません。プリプロセッサ命令の一種にマクロがある。一般に、マクロは大文字で記述される。
図01:マクロを使ったC++プログラム
上記の手順からすると、3行目と4行目はマクロを表しています。面積を計算する場合、定義されたマクロがPI値の代わりに使用されます。14行目 volume=CUBE(value) で、プリプロセッサは volume=(value*value*value) と文を展開する。立方体を求めることは関数として書けるが、ここではマクロで書いている。VOLUME=CUBE(x+y)という記述があれば、VOLUME=(x+y*x+y*x+y)と展開されるのです。
プログラミングトークンの中には、誤入力しやすいものがあります。例えば、#defineと&、#defineと||のように、マクロで置き換えることができます。マクロ定義には式を含めることもできます(例:#define AREA 4*5.56)。
関数が呼び出されると、コンパイラがそれを実行するのに時間がかかる。関数がそれほど複雑でない場合、プログラマは関数をインライン関数に変換することができます。以下のプログラムをご参照ください。
図02:インライン化されていない関数
print_helloはシンプルな関数です。この関数が呼ばれると、文字列 "Hello" が表示されます。この関数の実行時間は0.187秒であるが、以下のようにinlineキーワードを使用することで0.064秒に短縮される。
図03:インライン関数
そのため、インラインキーワードを使用することで、実行時間を短縮することができます。インライン関数は、ループやswitch文がある場合、また関数に静的変数や再帰的関数が含まれる場合、動作しないことがあります。
マクロとインライン関数 | |
マクロは、プログラムの先頭に含まれるプリプロセッサ命令で、ハッシュ記号が先行するコード片です。 | インライン関数は、プログラムの実行時間を最小限にするためのC++の拡張機能です。 |
評価時間 | |
マクロでは、パラメータはプログラム内で使用されるたびに評価されます。 | インラインの場合、パラメータは1回でカウントされます。 |
レビュアー | |
プリプロセッサーチェックマクロ。 | コンパイラはインライン関数をチェックする。 |
キーワード | |
馬は「定義」されるかもしれません。 | インライン機能では、キーワード「inline」を使用します。 |
使用方法 | |
マクロは、定数、式、テキスト置換、関数定義などの定義に使用することができます。 | インライン関数は、プログラムの実行時間を最短にするために使用することができます。 |
終了 | |
マクロは改行で終了します。 | インライン関数の終端は、中括弧で囲みます。 |
定義付けのポイント | |
プログラム開始時にマルコを定義する。 | インライン関数は、クラスの内部または外部で使用することができます。 |
この記事では、マクロとインライン関数の違いについて説明します。これらの概念は、C++プログラミングで使用されます。マクロとインライン関数の違いは、マクロがプリプロセッサでチェックされるのに対し、インライン関数はコンパイラでチェックされることです。