c++跨平台开发,c语言跨平台编译
我们知道,任何应用在操作系统上的功能实现都依赖于操作系统API。基于这样的理解,我们大概可以得到这样的认识:任何跨平台的代码都只是不同平台的操作系统的API的一层封装。现在以gtk的动态加载dll的函数g_module_open为例,可以想象一下它是如何实现跨平台的。我们知道Windows平台动态加载dll的功能是LoadLibrary,而linux平台动态加载共享库(dlopen是用来调用动态链接库作为Linux平台下的共享库)是DLOpen。那么我们可以想象g_module_open可以这样实现:
g module * g _ module _ open(char * PSZ filename,int Flag)
{
#如果已定义_WINDOWS
返回LoadLibrary(PSZ filename);
#否则
#如果定义_LINUX //这里假设_LINUX是LINUX平台的logo宏。
返回dlopen(pszFileName,Flag);
#endif
#endif
}
这里我们假设编写跨平台代码的关键是找到不同平台中功能相同的接口,然后在上面封装一个外壳供用户调用。为什么说使用标准C可以实现跨平台?原因是标准C是行业标准,已经在不同的操作系统中实现,相当于我前面说的shell。当然,写跨平台代码也有很多需要注意的地方,比如字节顺序(大端机还是小端机)、字节对齐和填充等。这远没有我说的那么简单。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。