【问题标题】:What are the signs of wchar_t on Apple targets?Apple 目标上 wchar_t 的标志是什么?
【发布时间】:2019-07-18 03:18:30
【问题描述】:

AFAICT wchar_t 在 Apple 目标上始终为 32 位宽。

wchar_t 上的标志是什么:

  • x86 Apple Darwin(32 位 MacOSX)
  • x86_64 Apple Darwin(64 位 MacOSX)
  • ARM iOS(32 位)
  • AArch64 iOS(64 位)

?

【问题讨论】:

    标签: ios c macos darwin


    【解决方案1】:

    ISO/IEC 9899:2017 §7.20.3/4:

    如果wchar_t(见7.19)定义为有符号整数类型,WCHAR_MIN的值不大于-127,WCHAR_MAX的值不小于127;否则,wchar_t定义为无符号整数类型,WCHAR_MIN的值为0,WCHAR_MAX的值不小于255。

    所以看看WCHAR_MIN会告诉你。


    iOS ABI Function Call Guide:

    在 iOS 中,与其他 Darwin 平台一样,charwchar_t 都是签名类型。

    【讨论】:

    • "所以查看 WCHAR_MIN 会告诉你。"我知道,问题是:在这些系统上返回的值的符号是什么?
    • @gnzlbg 这取决于编译器,而不是架构。
    • 我认为这些架构的 ABI 需要特定类型。例如,独立于你使用的编译器,如果你想调用一个内核 ABI 来处理这个,你必须坚持内核期望的任何 ABI。有多少编译针对这些架构?我以为只是叮当声。其他编译器与此处的 clang 有何不同? AFAICT 只有一个 C 和 C++ 标准库可用于这些。所以如果你想使用这些,你必须按照他们的期望去做。
    • @gnzlbg gcc 和 glibc 也可以在 OS X 上运行。OS X 毕竟是 FreeBSD。
    • 当然,但独立于编译器,OSX 内核和标准库 API 将需要特定的 wchar_t 类型。它的标志是什么?我希望对于这个目标,clang 和 gcc 需要达成一致。
    猜你喜欢
    • 1970-01-01
    • 2019-06-07
    • 1970-01-01
    • 2011-02-05
    • 2018-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-04
    相关资源
    最近更新 更多