マクロのような関数の考え方を理解しようとしていますが、困惑する点がいくつかあります。たとえば、次のようになります。
#define Max(a,b) ((a)>(b)) ? (a):(b))
そして私はそれをそのように呼びます
int i = Max(4,5);
a>b
これにより、 ?と同等の条件式が評価されます。はいの場合はa、そうでない場合はb。しかし、Max関数が引数をどう処理するかをどのように知っているかについて私は混乱しています。実際の関数とは異なり、実装は呼び出し側プログラムのコードで記述されていません。定義ステートメントの右側のステートメントは私のためにこれを行っていますか?それは私にとっては新しいことであり、ここで何が起こっているのかを確実に理解したいと思います。
マクロのような関数のこの特定の部分は私を混乱させます。これらのタイプのマクロは、スタックのメモリを節約するJSR RTSプロセッサ命令を除外しているため、オーバーヘッドコストを削減するのに役立つことを私は知っています。