c - 如何避免普通“char”到:“unsigned char”或“signed char”转换的gcc警告?

c - 如何避免普通“char”到:“unsigned char”或“signed char”转换的gcc警告?

正确的解决方案是将正确类型的变量传递给函数,即如果函数需要纯字符,则声明纯字符并获取其地址,依此类推。

C 标准规定“char”、“signed char”和“unsigned char”是不同的类型。"char" 必须具有与 "signed char" 或 "unsigned char" 相同的行为,由编译器开关确定,但您不能互换使用它们。无论您是否使用 -funsigned-char,您都应该编写完全相同的代码。

另一张海报使用演员表的建议并不好。所做的只是抑制警告,明确禁用警告会更清楚(例如,使用编译指示,或在您的生成文件中全局关闭警告)。

演员表并没有解决代码的问题,它只是阻止编译器指出它。这是一个有点学术的观点,但在非 2 的补码系统上,带符号的字符可能有陷阱表示(它们与值 0 <= x <= CHAR_MAX 但不是其他值的布局兼容)。所以代码可能会崩溃。

根据您提供的详细信息,实际上您的最佳解决方案可能只是禁用警告并接受代码在这方面不可移植的事实。

相关故事

梅苏特·厄齐尔
365bet体育在线中文

梅苏特·厄齐尔

【2026世界盃門票】開始販售!世界盃門票購買懶人包!
365bet体育在线中文

【2026世界盃門票】開始販售!世界盃門票購買懶人包!

赛尔号 (动画)
真的365平台

赛尔号 (动画)