我一直在阅读许多书籍/链接中的声明 - “有很多因素决定了从一个平台到另一个平台移植c代码”。他们引用操作系统或微处理器的平台。这些因素是什么?从一个平台到另一个平台的代码移植取决于。 提前谢谢。
答案 0 :(得分:4)
平台可能是指OS +编译器+虚拟内存地址空间+底层硬件架构。
有些因素是:
操作系统提供的API,用于动态内存分配,线程同步,共享资源保护等。
原始类型的大小,由编译器决定(除了sizeof(char)
,C语言标准为1)。
指针的大小,取决于虚拟内存地址空间的大小(32位平台上4个字节,64位平台上8个字节)。
底层硬件架构的端点,当通过“原始地址”访问大于char
的类型时会产生不同的行为(例如,使用{{1} })。
答案 1 :(得分:2)
"平台"可以指OS,编译器工具链或目标处理器中的一个或多个。
影响可移植性的一些因素可能包括:
int
在一个平台上可能是32位,在另一个平台上可能是64位,或者数值的字节可能不同。答案 2 :(得分:0)
将平台理解为操作系统,您必须考虑到许多代码使用对OS挂钩的本机调用,并且存在仅与一个操作系统交互的库。您可以使用支持目标操作系统的库来避免此问题。
另一方面,如果你将平台理解为架构,你会有一些低级别的警告,如按位,输入,地址大小等...