有没有办法检测编译器(我有一个支持它们的当前 GCC 和一个不支持的老旧的 clang)是否实现了语句表达式,以便我可以像这样做:
#ifdef NO_COMPOUND_STATEMENTS
#define MIN(a,b) ((a)<=(b) ? (a):(b))
#define MAX(a,b) ((a)>=(b) ? (a):(b))
#else
#define MIN(a,b) ({ __typeof__ (a) _a=(a); __typeof__ (b) _b=(b); _a<_b ? _a : _b; })
#define MAX(a,b) ({ __typeof__ (a) _a=(a); __typeof__ (b) _b=(b); _a>_b ? _a : _b; })
#endif