Binresist 2016-01-29 09:30 采纳率: 0%
浏览 1797

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

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

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

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

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

  • 写回答

2条回答 默认 最新

  • 91program 博客专家认证 2016-01-29 09:56
    关注

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

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

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

    评论

报告相同问题?

悬赏问题

  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥30 用arduino开发esp32控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题