2 u013022149 u013022149 于 2016.01.29 17:30 提问

关于C语言跨平台编码问题

求助,如题,现在的系统又多又杂乱,想问一下,应该从哪个角度来分析C语言跨平台问题?
例如,想要编一个跨平台的小程序A,适用于目前所有的操作系统,也适用于32位和64位。
1. 怎么判断当前的系统平台?比如说这样?
if unix
if hp
else if solaris
else ?
else if linux
...
else windows
...
这样明显有点穷举的意思,怎么确保自己罗列的就是目前所有的在用的操作系统?

2.怎么判断当前是否需要引入不同的头文件来确保某些函数在任何系统下都能用?
意思是所有用到非标准头文件并且非自定义函数的都要考虑各个平台的处理?

3.C语言在不同环境下的编码不同是因为操作系统的原因还是因为使用的编译器的原因?意思是不同的编译器是不是就会有可能有不同的表现?

对跨平台基本没有了解,特意求教,希望各路大神指导一下。感激不尽。

3个回答

xyz347
xyz347   2016.01.29 17:50

平台相关的代码放OS目录里面

91program
91program   Ds   Rxr 2016.01.29 17:56

代码,基本上是无法判断操作系统的。因为要将C不语言编译成可以在不同的操作系统下运行的程序,需要不同的编译器的。
没有可能使用一个编译器,编译出可以在所有系统上运行的程序。
C语言,只是功能的实现语言,但它不是可以执行的机器码。

编码时,一般针对不同的操作系统使用不同的宏来区分,特别是要使用操作系统的一些特性时。
一样的对于非标准头文件,也可以使用宏来区分不同的操作系统

C语言实现的功能,基本上与编译器没有关系。除非是一些特殊的语法!但在编写跨平台的代码时,肯定不能使用这些特殊的语法。

oyljerry
oyljerry   Ds   Rxr 2016.01.30 11:54

可以看看各种开源跨平台代码,都是利用编译器的宏来判断os类型,然后定义不同代码来实现的。这个是成熟方案了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!