将C代码移植到不同的;平台“;

将C代码移植到不同的;平台“;,c,operating-system,porting,platform,C,Operating System,Porting,Platform,我一直在读很多书/链接中的语句,比如“有很多因素决定了c代码从一个平台移植到另一个平台”。它们指的是操作系统还是微处理器。从一个平台到另一个平台的代码移植依赖于哪些因素。 提前感谢您。将平台理解为操作系统,您必须考虑到许多代码使用对操作系统挂钩的本机调用,并且有一些库仅与一个操作系统交互。使用支持目标操作系统的库可以避免此问题 另一方面,如果您将平台理解为体系结构,则会有一些低级警告,如按位、键入、地址大小等。将平台理解为操作系统,您必须考虑到许多代码使用对操作系统挂钩的本机调用,并且有一些库仅

我一直在读很多书/链接中的语句,比如“有很多因素决定了c代码从一个平台移植到另一个平台”。它们指的是操作系统还是微处理器。从一个平台到另一个平台的代码移植依赖于哪些因素。
提前感谢您。

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


另一方面,如果您将平台理解为体系结构,则会有一些低级警告,如按位、键入、地址大小等。

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

另一方面,如果您将平台理解为体系结构,则会有一些低级警告,如按位、键入、地址大小等。

“平台”可能指一个或多个操作系统、编译器工具链或目标处理器

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

  • 程序中使用的库函数或系统调用
  • 一个工具链支持但另一个工具链不支持的可能使用的非标准扩展
  • 可以从一个平台更改到另一个平台的类型表示。例如,
    int
    在一个平台上可能是32位,在另一个平台上可能是64位,或者数值的尾数可能不同
    • “平台”可以指一个或多个操作系统、编译器工具链或目标处理器

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

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

      平台可能指操作系统+编译器+虚拟内存地址空间+底层硬件架构

      其中一些因素包括:

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

    • 基本类型的大小,由编译器决定(除了
      sizeof(char)
      ,C语言标准为1)

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

    • 底层硬件架构的端性,当通过“原始地址”(例如,使用
      char*
      )访问大于
      char
      的类型时,会产生不同的行为


    • 平台可能指操作系统+编译器+虚拟内存地址空间+底层硬件架构

      其中一些因素包括:

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

    • 基本类型的大小,由编译器决定(除了
      sizeof(char)
      ,C语言标准为1)

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

    • 底层硬件架构的端性,当通过“原始地址”(例如,使用
      char*
      )访问大于
      char
      的类型时,会产生不同的行为


    • 一个好的技术是首先编写可移植代码,这将您的问题限制为编译器错误和实现限制。然而,关于如何编写可移植代码的好书并不多(如果有的话),因此您必须通过实践来学习。一个好的技术是首先编写可移植代码,这将您的问题限制在编译器错误和实现限制上。然而,关于如何编写可移植代码的好书并不多(如果有的话),因此您必须通过实践来学习。原始数据类型的大小是否仅取决于编译器?还是包括了其他一些因素?@Akhil:据我所知,这完全是由编译器决定的。当然,编译器通常是为某些给定的硬件体系结构指定的。因此,您也可以将此因素归因于硬件(尽管我个人不这么认为)。原始数据类型的大小是否仅取决于编译器?还是包括了其他一些因素?@Akhil:据我所知,这完全是由编译器决定的。当然,编译器通常是为某些给定的硬件体系结构指定的。因此,您也可以将此因素归因于硬件(尽管我个人不这么认为)。