マクロの簡単な例を見てきましたが、if文を使って、与えられた変数を再割り当てするなど、もっと複雑なものについては疑問があります。このようなもっと複雑な表現をマクロで行うことはできますか?私は数十億回実行される関数を持っているので、変数を前後に渡すのではなく、プリプロセッサにコードを投げるだけでいいです。Cより複雑な関数のマクロ
は、私は、以下の機能を持っていると言う:
int foo(int a, int b, int c){
if (a > 2)
c = a;
if (b > 3)
c = b;
return a + b + c;
}
私はマクロにこれを行うことができますどのように?
Umm。あなたは正確に何をしようとしていますか?なぜこれをマクロに変更するのか? – Falmarri
最近では、コールオーバーヘッドが重要な場合にインライン関数を使用し、C89以降のマクロは不要であり、多くの欠点と落とし穴がある場合に、このためにマクロを使用する理由はありません。 –
@Paul:Cで汎用プログラミングを行うにはマクロが唯一の方法です。もしOPが 'int'、' long'、 'double'の引数(任意の組み合わせ)で動作するような関数を望むなら、どうでしょうか? –