Racket中C浮点数的正确指针类型转换是什么?

时间:2019-04-13 19:29:35

标签: lisp racket

在Racket文档中,有诸如_intptr之类的整数指针类型,但是如何使用动态C库中的float *?

1 个答案:

答案 0 :(得分:3)

球拍具有内置的p1 = go.Scatter(x=X_test['Explained by: GDP per capita'], y=y_test, # Assuming y_test is a numpy array or pandas series # if it is also a dataframe you have to specify the column mode='markers', marker=dict(color='black') ) p2 = go.Scatter(x=X_test['Explained by: GDP per capita'], y=regr.predict(X_test), mode='lines', line=dict(color='blue', width=3) ) (和_float)C类型表示,以及_double类型。您可以将它们组合起来以将返回值视为C _pointer指针。

遵循这些原则的东西(这是草图-根据需要进行修改以适应您的情况):

您的C函数:

float

还有Racket FFI包装器:

float* my_float_returner() {
    float* pi = malloc(sizeof(float));
    *pi = 3.1415926535;
    return pi;
}

不用说,以这种方式将指针视为未输入的类型可能很危险,而且您必须小心。

我会引用Racket foreign function interface documentation的第一句话:

  

尽管使用FFI不需要编写任何新的C代码,但它提供的内容很少   隔离C程序员面临的与安全性和内存有关的问题   管理。

如果使用这些工具,则应该戴上C帽子,并附带所有与指针相关的偏执狂关心和体贴。