如何从 C++ 调用复杂参数的 C 函数

How to call a C function of a complex argument from C++

我想调用复杂参数的 C 函数,声明为

double _Complex cerf ( double _Complex z );

来自 C++。以下作品:

#include<complex.h>
double _Complex z = 1.0;
cerf( z );

但是,我无法为 z 分配虚部:

double _Complex z = 1.0 + _Complex_I * 2.0;

不在 g++ 下编译:"unable to find numeric literal operator ‘operator""iF’"。我尝试的其他表达式会导致其他类似的神秘错误消息。

C++ 和 C 并不完全兼容,尤其是 C99 的特性,这些特性在 C++ 中可能存在也可能不存在,复数就是其中之一。 C++ and C compatibility

如果您使用的是 GCC,则可以使用标志 -fext-numeric-literals 启用对 _Complex 的支持。

Working example