gaya_udonのブログ

学んだことを自分の言葉にすることで理解が深まると思ったので、ブログ開設しました。主にPythonについて学習したことを書こうと思います。

C言語のマクロについて。

C言語にはマクロという機能がある。
#define マクロ名 置き換える値
と書くことで、今後プログラムにそのマクロ名が出現するとそれは置き換えた値として計算される機能である。
たとえば
#define pi 3.14

double area(double r)
{
return pi * r * r;
}
と書くと、return には3.14* r * rという動作になる。
これはpiという変数に3.14を代入しているように見えるがそうではないので注意が必要。

#define マクロ名(引数1, 引数2) 置き換える内容
とかけば関数のようなマクロを定義することができる。
たとえば
#define sum(a, b) a + b
int main()
{
int x = sum(3 + 8);
double y = sum(3.2 + 4.8);
}
などとするとその通りの計算結果が返ってくることになる。これはC言語の関数とは違い、型に関係なく計算を行ってくれる。

マクロの場合、置き換える内容が複数行にわたるときはdo{...}while(0)でまとめる。さらに、それぞれの行末に¥を書く必要がある。