我想制作一个宏来返回复数的实部(适用于 double、float 和 long double 类型)。GNU C 扩展__real__
似乎符合要求(尽管不幸的是它不可移植)。我正在尝试以下操作:
#include <complex.h>
#if defined(__real__)
#define MYREAL(z) (__real__ z)
#endif
然而,扩展似乎__real__
没有被定义为一个普通的宏,所以 defined( __real__
) 测试失败了,即使它可用。有谁知道如何测试是否存在__real__
为此制作适当的宏?
此外,如果有人知道这样做的便携方式,我也会对该解决方案感兴趣。