我正在将 C++ Win32 应用程序转换为 Linux,我在 Win32 应用程序中使用的类型和函数有问题,我已经解决了类型问题(通过使用 typedef 和 micros)但我不知道应该使用哪个函数来代替这些功能 ?
-创建文件
-读取文件
-GlobalAlloc
-wsprintf
-全球免费
在大多数情况下,CreateFile,ReadFile可以用标准 C 或 C++ 文件管理(即FILE *或fstream类型操作)替换 - 但是有些选项您无法使用这种方式(例如对文件的“独占访问”),因此像往常一样,魔鬼在细节上。
编辑:fopen将创建并fread从 a 读取FILE *,fstream::open并且fstream::read将是创建和读取 a 的函数fstream。
GetFileSize通常通过“查找文件末尾,然后获取文件位置”来完成。因此,对于FILE *使用fseek(fp, 0, SEEK_END);and size = ftell();, or fstream::seekg();and fstream::tellg()- 不要忘记在从文件中读取之前返回到开头。
GlobalAlloc并且GlobalFree应该可以用相关的mallocornew和freeor替换,delete具体取决于它的使用方式。
打印成字符串的标准函数wchar_tis swprintf,如果编译器符合标准,它也应该在 Windows 上工作。
使用标准 C(++) 库的好处是您现在可以为 windows 和 linux 编译代码,而无需更改代码。而且您不太可能分辨出性能上的差异。
CreateFile:openReadFile:readGetFileSize: stat(这也为您提供了很多其他信息。对于大小,该字段是st_size。)GlobalAlloc和GlobalFree:你可以只使用malloc和
free。wsprintf: 这看起来和标准 C 函数一样swprintf,它应该存在于任何支持 C 的系统上。