库如何实现不同操作系统之间的可移植性
Posted
技术标签:
【中文标题】库如何实现不同操作系统之间的可移植性【英文标题】:how can libraries achieve portability among different OS 【发布时间】:2015-05-13 19:45:06 【问题描述】:类似于 c/c++ 标准库。
由于标准库中的函数最终会调用特定的操作系统 API 来完成它的工作,如果我想编译我的代码以在其他操作系统上运行,这些语言库如何实现可移植性。 这些库会改变它的代码(对特定操作系统 API 的调用)吗?这些库的不同版本是否针对不同的操作系统?要不然是啥 ? 提前致谢。
【问题讨论】:
Creating a portable library to run on both linux and windows的可能重复 这是预处理器指令的重要用途之一。 @big.heart 是的。您基本上有代码来处理程序中的每个操作系统,并且您使用预处理器来确定实际使用的代码。 另见***.com/questions/5919996/… @big.heart 通常每个操作系统都有一个单独的 .dll(或 .so 用于 linux 或 .dylib 用于 OS X)。 【参考方案1】:一个简单的例子..
#ifdef OS_WINDOWS
//definition for Windows
#else
//define it for Unix
#endif
他们使用预处理器来确定操作系统,使用一些指针技巧来确定字节顺序。一般没有什么太复杂的。 一旦 stds 确定操作系统,使用预定义的定义.. 他们使用相关的适当代码。
// Real-life example:
if(definition == 2) system("cls");
else system("clear");
【讨论】:
以上是关于库如何实现不同操作系统之间的可移植性的主要内容,如果未能解决你的问题,请参考以下文章