#include <iostream>
#ifdef _WIN32
// Windows下的文件读取函数声明
bool ReadFileOnWindows(const char* filePath, char* buffer, size_t bufferSize);
#elif defined(__linux__)
// Linux下的文件读取函数声明
bool ReadFileOnLinux(const char* filePath, char* buffer, size_t bufferSize);
#endif
bool ReadFile(const char* filePath, char* buffer, size_t bufferSize) {
#ifdef _WIN32
return ReadFileOnWindows(filePath, buffer, bufferSize);
#elif defined(__linux__)
return ReadFileOnLinux(filePath, buffer, bufferSize);
#else
#error "Unsupported platform"
#endif
}
实现思路
- 条件编译判断平台:使用
#ifdef _WIN32
判断是否为Windows平台,使用#elif defined(__linux__)
判断是否为Linux平台。这两个宏定义是编译器在不同平台下预定义的,用来标识当前编译环境的操作系统。
- 声明不同平台函数:在不同的条件编译块内,声明对应平台的文件读取函数(这里只是声明,实际实现需要根据平台的API来编写,例如Windows下可能使用
CreateFile
和ReadFile
等函数,Linux下可能使用open
、read
函数)。
- 统一对外接口:定义一个统一的
ReadFile
函数,在函数内部通过条件编译,根据不同平台调用对应的文件读取函数,这样上层代码只需要调用ReadFile
函数,无需关心具体平台的实现细节。如果不是Windows和Linux平台,则通过#error
抛出错误,提示不支持该平台。