Jos*_*phH 12
在大多数情况下,char在ARM上未签名(出于性能原因)并在其他平台上签名.
iOS与ARM的常规约定不同,默认情况下会对char进行签名.(特别是这与Android不同,其中在ndk中编译的代码默认为unsigned char.)
这可以在xcode中更改,有一个'char' Type is unsigned选项(默认为关闭).如果将其更改为"yes",则xcode将传递-funsigned-char给llvm.(检查xcode 5.0.2)
iOS ABI函数调用指南中提到了iOS不同的原因:ARM64函数调用约定,简单地说:
在iOS中,与其他Darwin平台一样,char和wchar_t都是签名类型.