gpt4 book ai didi

c++ - 这个 C 函数有什么类型的函数参数声明?

转载 作者:行者123 更新时间:2023-12-04 11:13:32 26 4
gpt4 key购买 nike

我正在研究 FFTW(西方最快的傅里叶变换),并研究了这个 C 函数。我不明白这个函数的声明,其中参数存在于 ()() 中。我从未见过这样的声明。谁能介绍一下?

void X(execute_dft_r2c)(const X(plan) p, R *in, C *out)
{
/*
*Body
*/
}

最佳答案

X 是一个根据编译参数添加精确命名前缀的宏。

我认为重点(至少其中之一)是如果源文件是使用不同的精度设置编译的,则通过导致错误来避免不匹配。
(C 没有类型安全链接。)

fftw3/kernel/ifftw.h中查找:

/* determine precision and name-mangling scheme */
#define CONCAT(prefix, name) prefix ## name
#if defined(FFTW_SINGLE)
typedef float R;
# define X(name) CONCAT(fftwf_, name)
#elif defined(FFTW_LDOUBLE)
typedef long double R;
# define X(name) CONCAT(fftwl_, name)
# define TRIGREAL_IS_LONG_DOUBLE
#elif defined(FFTW_QUAD)
typedef __float128 R;
# define X(name) CONCAT(fftwq_, name)
# define TRIGREAL_IS_QUAD
#else
typedef double R;
# define X(name) CONCAT(fftw_, name)
#endif

在第一种情况下,您的声明扩展为

void fftwf_execute_dft_r2c(const fftwf_plan p, R *in, C *out)

关于c++ - 这个 C 函数有什么类型的函数参数声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59422961/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com