c - 文件的二进制兼容性*

标签 c api binary-compatibility

我正在设计进行一些数学计算的 C 库。我需要指定序列化接口(interface)才能保存然后加载一些数据。问题是,在库的公共(public) API 中使用 FILE* 指针是否正确(从二进制兼容性的角度来看)?

目标平台是:

  • Linux x86、x86_64 和 gcc >= 3.4.6
  • Windows x86, x86_64 >= WinXP with VS >= 2008sp1

我需要尽可能多的二进制兼容,所以目前我的变体如下:

void SMModuleSave(SMModule* module, FILE* dest);
SMModule* SMModuleLoad(FILE* src);

所以我很好奇使用 FILE* 或更好地切换到 wchar*/char* 是否正确?

最佳答案

我不同意 ThiefMaster:本地化没有任何好处(即在 Linux 上使用 int 类型的文件描述符,在 Windows 上使用 void * 类型的句柄)当有等效的可移植解决方案时。

我可能会使用 FILE * 而不是从库中按名称打开文件:这对库用户来说可能更麻烦,但它也更灵活,因为大多数 libc 实现提供多种文件打开方式(fopen(), _wfopen(), _fdopen(), fdopen() , fmemopen(),...) 而且您不必自己维护单独的宽字符 API。

关于c - 文件的二进制兼容性*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621144/

相关文章:

C windows 套接字在第一次执行时永远被阻塞

c++ - 如何禁用 GTK 拖放?

python - C代码嵌入python回调函数

2 列 Java 控制台日历

Python:将 Base64 编码为 Basic 连接到 API

c - 如何编写编译器 "understandable"C 代码?

api - 知识图 API 返回与站点不同的结果

Java 二进制兼容性问题 : sun. font.FontManager 类成为接口(interface)

c++ - 更改接口(interface)类中私有(private)成员变量的指针类型二进制兼容吗?

ARMv8 向后兼容 ARMv7(Snapdragon 820 与 Cortex-A15)