我需要将 fopen 用于库。这是正确的方法吗?fopen 是否已经在某处定义?(这在 LibC IMO 中会很有用)
@[Link("c")]
lib LibStd
type File = Void*
fun fopen( LibC::Char*, LibC::Char* ): File
fun fclose( File )
end
它工作正常,我想知道定义它的最佳方法。
我需要将 fopen 用于库。这是正确的方法吗?fopen 是否已经在某处定义?(这在 LibC IMO 中会很有用)
@[Link("c")]
lib LibStd
type File = Void*
fun fopen( LibC::Char*, LibC::Char* ): File
fun fclose( File )
end
它工作正常,我想知道定义它的最佳方法。
只是一个可能有用的小改进(这是我在绑定中使用的当前解决方案):
@[Link("c")]
lib LibStd
type File = Void
fun fopen( filename : LibC::Char*, mode : LibC::Char* ): File*
fun fclose( stream : File* )
end
不要打扰C。只需使用Crystal:
File.open(path) { |file| ... }
如果您需要访问文件描述符,您可以调用file.fd
.