我正在将一个Haskell函数暴露给C/C++,代码如下:
foreign export ccall foo :: Ptr CInt -> CInt -> IO CInt
foo ptr len = do
list <- peekArray (fromIntegral len) ptr
-- run calculation based on list entries
return result
导出函数的签名变成了:
HsInt32 foo(HsPtr a1, HsInt32 a2);
然而,由于数组未被修改,我更希望使用以下方式:
HsInt32 foo(const HsPtr a1, HsInt32 a2);
有没有一种自动添加此注释的方法?
(动机是我希望通过 std::vector< int > 进行操作)
inline int foo(const std::vector<int> &v)
{
return foo(v.data(), v.size());
}
(不包括 const_cast。)
extern "C" HsInt32 foo(const HsPtr a1, HsInt32 a2);
。 - army007