gpt4 book ai didi

C宏gsl库代码转换为D

转载 作者:太空宇宙 更新时间:2023-11-04 03:33:05 26 4
gpt4 key购买 nike

我正在从 gsl 数字库中的 C 头文件到 linux ubuntu 下的 D 进行代码转换。我想知道宏是什么:

/* 1 */ #define GSL_VAR extern // gsl types.h file
/* 2 */ #define GSL_RANGE_COND(x) (x) // gsl_inline.h file
/* 3 */ #define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)

做。

我怀疑特别是 GSL_VAR 给我带来了一些问题。它的一个使用例子是

GSL_VAR const gsl_rng_type *gsl_rng_borosh13; //gsl_rng.h

我转换成

gsl_rng_borosh13 const(gsl_rng_type)*; // D Code

这是正确的做法吗?

最佳答案

/* 1 */ #define GSL_VAR extern // gsl types.h file

如果您要将 C 代码转换为 D,这可以完全删除,因为 D 使用模块。如果您正在编写绑定(bind),那么您应该使用 extern(C)

/* 2 */ #define GSL_RANGE_COND(x) (x) // gsl_inline.h file

这是恒等函数。在 D 中,您将编写一个函数而不是使用宏(例如 int GSL_RANGE_COND(int x) { return x; })。但是,我想编译时标志会改变这个宏的行为;在 D 中,您将使用 version 语句。

/* 3 */ #define GSL_FN_EVAL(F,x) (*((F)->function))(x,(F)->params)

同样,在 D 中,您可以为此编写一个函数。替换 TUV。使用正确的类型。

T GSL_FN_EVAL(U* F, V x) { return F.function(x, F.params); }

关于C宏gsl库代码转换为D,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34633486/

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