gpt4 book ai didi

c - 这段 C 代码中的 '@' 符号是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 02:39:07 24 4
gpt4 key购买 nike

我正在挖掘 numpy 的内部结构,试图弄清楚为什么它不为我构建(64 位 Cygwin,Windows 8.1),我来到了 this file .

当编译遇到 rad2deg() 函数(粘贴在下面)时,我得到了一个段错误。查看该文件,整个代码中散布着“@”符号。它看起来像某种通配符 token 或预处理器 token ,但我在任何地方都找不到任何关于它的信息。

#define LOGE2    NPY_LOGE2@c@
#define LOG2E NPY_LOG2E@c@
#define RAD2DEG (180.0@c@/NPY_PI@c@)
#define DEG2RAD (NPY_PI@c@/180.0@c@)

@type@ npy_rad2deg@c@(@type@ x) {
return x*RAD2DEG;
}`

代码中还有其他地方编译器不会被“@”字符阻塞。

谁能给我指出一个可以解释这一点的搜索词?

最佳答案

好的,我已经弄明白了。这就是我在午睡和服用止咳药后发帖提问的结果。

这是一些非标准的预处理器技巧,可能在为 numpy 构建 C 代码的 Python 代码中实现。

/**begin repeat
* #type = npy_float, npy_double, npy_longdouble#
* #c = f, ,l#
* #C = F, ,L#
*/

#define LOGE2 NPY_LOGE2@c@
#define LOG2E NPY_LOG2E@c@
#define RAD2DEG (180.0@c@/NPY_PI@c@)
#define DEG2RAD (NPY_PI@c@/180.0@c@)

@type@ npy_rad2deg@c@(@type@ x)
{
return x*RAD2DEG;
}

/**end repeat**/

它遍历代码,用注释 block 中的标记替换代码中的 @ 包围标记,生成三个几乎相同的代码块,它们对不同的数据类型进行操作。

我怀疑段错误可能来自不正确的数据类型;我们拭目以待。

谢谢大家!

关于c - 这段 C 代码中的 '@' 符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33850445/

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