(以下所说的平台指的是软件操作系统)
我在做移植项目是遇到这个问题。项目要求做一个平台无关的程序,目前是要满足跨Linux和Vxworks平台。
首先,划分平台相关部分代码。
然后,在不影响程序的逻辑关系和函数功能的基础上,对其位置进行调整,做成条件编译的方式。
最后就是最重要的一步,定义这个宏开关。这也是我今天上午学习的重点。
关于这个宏开关,我尝试好几种方式:
1)我开始时在源文件的头文件里定义或者在源文件中定义效果是正确的。但是这是最次的方式,如果切换平台还需要修改内部代码。
2)然后,我想这个宏开关应该是这个程序公用的,所以我就将他放到了一个公共的头文件中定义,这样勉强算是提高了一点儿吧。
3)最后,我想到使用Makefile的方式,也是突然想起,内核还有其他软件都是有一个configure文件,那个文件的作用就是生成一个Makefile,通过修改configure文件,可以生成不同的Makefile,我也想尝试一下。
这就是接下来介绍的内容。
我尝试写了一个简单的程序 test.c
+++++++++++++++++++++++++++++++++++++++++
#ifdef
我在做移植项目是遇到这个问题。项目要求做一个平台无关的程序,目前是要满足跨Linux和Vxworks平台。
首先,划分平台相关部分代码。
然后,在不影响程序的逻辑关系和函数功能的基础上,对其位置进行调整,做成条件编译的方式。
最后就是最重要的一步,定义这个宏开关。这也是我今天上午学习的重点。
关于这个宏开关,我尝试好几种方式:
1)我开始时在源文件的头文件里定义或者在源文件中定义效果是正确的。但是这是最次的方式,如果切换平台还需要修改内部代码。
2)然后,我想这个宏开关应该是这个程序公用的,所以我就将他放到了一个公共的头文件中定义,这样勉强算是提高了一点儿吧。
3)最后,我想到使用Makefile的方式,也是突然想起,内核还有其他软件都是有一个configure文件,那个文件的作用就是生成一个Makefile,通过修改configure文件,可以生成不同的Makefile,我也想尝试一下。
这就是接下来介绍的内容。
我尝试写了一个简单的程序 test.c
+++++++++++++++++++++++++++++++++++++++++
#ifdef