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

关于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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?