gpt4 book ai didi

C - 在 Windows 上编写在 UNIX 上编译,反之亦然

转载 作者:行者123 更新时间:2023-11-30 14:23:38 25 4
gpt4 key购买 nike

我计划使用 Cygwin 套件在 Windows 上使用 Netbeans 编写一个 ANSI-C 程序,稍后我想在 UNIX 系列操作系统上编译源代码并使用该程序。我应该担心任何类型的兼容性问题吗?

最佳答案

如果您仅使用 C 标准中描述的功能,则可能的不兼容性集通常会减少为:

  • char的符号
  • 所有类型的大小(例如 int = long = Windows 中的 32 位,在 UNIX 上不一定如此),我的意思是字面上的所有,包括指针和 enums
  • 考虑不周的类型转换和强制转换,尤其是涉及指针和负值(在表达式中混合有符号和无符号类型也很容易出错)
  • 结构/union 中类型的对齐及其填充
  • 字节顺序
  • 位域的顺序
  • 实现定义的/特定的行为,例如除有符号值时负值、舍入和符号的右移
  • 浮点:不同的实现和不同的优化
  • 未指定的行为,例如函数参数和子表达式求值的顺序, memcpy() 的方向复制数据(从低地址到高地址或相反)等
  • 未定义的行为,例如i+i++a[i]=i++ 、修改字符串文字、当它指向的对象消失时取消指针引用(例如 free()'d )、不使用或滥用 constvolatile等等等等
  • 为标准库函数提供不适当的参数,导致未定义的行为,例如调用printf() -类似具有错误数量或类型参数的函数
  • 非 ASCII 字符/字符串
  • 文件名格式(特殊字符、长度、区分大小写)
  • 时钟/时间/区域设置格式/范围/值/配置

还有更多。实际上,您必须阅读标准并注意哪些内容保证有效,哪些无效以及是否存在任何条件。

如果您使用 C 标准之外的内容,该功能在不同平台上可能不可用或相同。

所以,是的,这是可能的,但你必须小心。通常是您所做的假设导致代码的可移植性很差。

关于C - 在 Windows 上编写在 UNIX 上编译,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com