【发布时间】:2009-09-01 13:02:23
【问题描述】:
我目前正在处理从第三方承包商处购买的代码。一个结构有一个无符号字符字段,而他们将该字段传递给的函数需要一个有符号字符。编译器不喜欢这样,因为它认为它们是不匹配的类型。然而,它显然是为那个承包商编译的。一些谷歌搜索告诉我“[i]t 是实现定义的 char 对象是否可以保存负值”。承包商的编译器可以基本上忽略有符号/无符号类型并同等对待吗?或者是否有编译器标志将它们视为相同?
C 不是我最擅长的语言——只要看看我的用户页面上的标签——所以任何帮助都将不胜感激。
【问题讨论】:
-
什么编译器?大多数 [如果不是全部] C 编译器将允许您更改 char 的隐式签名,但它是特定于编译器的标志,因此没有通用答案。
-
为什么不根据需要将它们转换为正确的类型?
-
此代码来自尚未接听我电话的承包商。它应该可以工作,特别是因为我们得到了一个内置的包——由于其他原因无法使用。
标签: c char sign compiler-flags