【发布时间】:2020-12-18 04:58:27
【问题描述】:
我想制作一个宏来返回复数的实部(适用于 double、float 和 long double 类型)。 GNU C 扩展 __real__ 似乎符合要求(尽管不幸的是它不可移植)。我正在尝试以下方法:
#include <complex.h>
#if defined(__real__)
#define MYREAL(z) (__real__ z)
#endif
但是,__real__ 扩展似乎没有定义为通常的宏,因此定义的(__real__) 测试失败,即使它可用。有谁知道如何测试__real__ 的存在以为此制作适当的宏?
另外,如果有人知道这样做的便携方式,我也会对该解决方案感兴趣。
【问题讨论】:
-
__real__来自哪里?也许该标头定义了一个包含一次的保护。 -
creal()应该处理你扔给它的任何东西。 -
这可能不是一个骗局,但this question 说它不容易做到。
-
creal()是为double定义的,float和long double还有其他函数(crealf, creall)
标签: c gcc complex-numbers gcc-extensions