代码何时依赖于平台?

When is code platform-dependent?

我了解某些算法和内联汇编可能是平台相关的。例如,如果您编写一个编译器,编译器的源代码是否会依赖于平台?如果我编译您的编译器,我必须使用与我的体系结构对应的相同版本的源代码吗?

如果您做的任何事情都是理所当然的,那么语言可能会发生变化,这将取决于平台;包括但不限于:

  • 假设一个特定的字符集(我们不时都假设为 ascii)
  • 假设浮动的工作方式或其结构的细节。
  • 编写假定某些字节序的代码(除了 hton 和 ntos,如果正确实施则可以正常工作)
  • 添加内联汇编以利用某些处理器功能(sse/mmx 等)
  • 取决于一些不是可移植的 vanilla C 库的外部库

编辑: 我忘记的最大的一个是假设整数类型的大小,charshortintlonglong long - 这些类型按大小,但几乎不能保证;最常见的拱门在长是什么等方面有所不同...因此 c99 引入了 int8_t int16_t... 等类型。