我有一个程序在两个不同的编译器上运行,每个编译器都有一个不同的文件处理库。例如在图书馆需要:
fwrite(buffer,size,elements,file)
而另一个是:
f_write(file,buffer,size,elements)
无论如何我可以#define
在我的主头文件中使用一个全局的#ifdef
语句来允许我在编译器之间无缝转换?
我有一个程序在两个不同的编译器上运行,每个编译器都有一个不同的文件处理库。例如在图书馆需要:
fwrite(buffer,size,elements,file)
而另一个是:
f_write(file,buffer,size,elements)
无论如何我可以#define
在我的主头文件中使用一个全局的#ifdef
语句来允许我在编译器之间无缝转换?
当然:
#ifdef STUPID_COMPILER
# define fwrite(ptr, size, nitems, stream) f_write(stream, ptr, size, nitems)
#endif
然后只需fwrite()
在您的代码中使用——不需要包装函数。f_write()
如果您使用需要的编译器/库,预处理器会将其转换为调用。
您可以创建一个新功能:
size_t my_fwrite(...)
{
#ifdef REAL_FWRITE
return fwrite(buffer,size,elements,file);
#elif F_WRITE
return f_write(file,buffer,size,elements);
#else
#error "No fwrite"
#endif
}
什么样的实现没有提供fwrite
但有f_write
?