私はかなり長い間 C でプログラミングを行ってきました。そのため、gcc コンパイラ拡張機能について聞いた高度な CI を少し学ぶことにしました。以下に、今まで次のように実装した MAX() のコードを見ました。
#define MAX(x,y) ((x) > (y)? (x): (y))
これは私が見つけた新しい定義です。残念ながら、以下のコードが何をするのかさえ理解できませんか? そして、なぜ私は上記の代わりに以下のようにするのでしょうか?
#define MAX(a,b) \
({ \
typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; })