在不同的平台之间移植C代码"

时间:2014-11-22 09:55:07

标签: c operating-system porting platform

我一直在阅读许多书籍/链接中的声明 - “有很多因素决定了从一个平台到另一个平台移植c代码”。他们引用操作系统或微处理器的平台。这些因素是什么?从一个平台到另一个平台的代码移植取决于。 提前谢谢。

3 个答案:

答案 0 :(得分:4)

平台可能是指OS +编译器+虚拟内存地址空间+底层硬件架构。

有些因素是:

  1. 操作系统提供的API,用于动态内存分配,线程同步,共享资源保护等。

  2. 原始类型的大小,由编译器决定(除了sizeof(char),C语言标准为1)。

  3. 指针的大小,取决于虚拟内存地址空间的大小(32位平台上4个字节,64位平台上8个字节)。

  4. 底层硬件架构的端点,当通过“原始地址”访问大于char的类型时会产生不同的行为(例如,使用{{1} })。

答案 1 :(得分:2)

"平台"可以指OS,编译器工具链或目标处理器中的一个或多个。

影响可移植性的一些因素可能包括:

  • 程序中使用的库函数或系统调用,
  • 可能使用的非标准扩展,在一个工具链中支持但不支持另一个工具链,
  • 表示可以从一个平台更改为另一个平台的类型。例如,int在一个平台上可能是32位,在另一个平台上可能是64位,或者数值的字节可能不同。

答案 2 :(得分:0)

将平台理解为操作系统,您必须考虑到许多代码使用对OS挂钩的本机调用,并且存在仅与一个操作系统交互的库。您可以使用支持目标操作系统的库来避免此问题。

另一方面,如果你将平台理解为架构,你会有一些低级别的警告,如按位,输入,地址大小等...