1

我需要将 fopen 用于库。这是正确的方法吗?fopen 是否已经在某处定义?(这在 LibC IMO 中会很有用)

@[Link("c")]
lib LibStd
  type File = Void*
  fun fopen( LibC::Char*, LibC::Char* ): File
  fun fclose( File )
end

它工作正常,我想知道定义它的最佳方法。

4

2 回答 2

2

只是一个可能有用的小改进(这是我在绑定中使用的当前解决方案):

@[Link("c")]
lib LibStd
  type File = Void
  fun fopen( filename : LibC::Char*, mode : LibC::Char* ): File*
  fun fclose( stream : File* )
end
于 2017-01-15T08:08:21.323 回答
0

不要打扰C。只需使用Crystal:

File.open(path) { |file| ... }

如果您需要访问文件描述符,您可以调用file.fd.

于 2016-12-18T17:33:09.190 回答