在Racket文档中,有诸如_intptr之类的整数指针类型,但是如何使用动态C库中的float *?
答案 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帽子,并附带所有与指针相关的偏执狂关心和体贴。