【发布时间】:2013-12-29 09:21:36
【问题描述】:
由于 C++ 中 char 的性质在 unsigned 限定符不存在时依赖于编译器,所以我是否可以将一个参数传递给 GCC 来强制所有 @987654323 @s 编译为unsigned?
【问题讨论】:
-
我通过谷歌搜索
gcc force unsigned char在十秒钟内发现了这一点,然后阅读了出现的 GCC 文档。是什么阻止了您进行这项研究? -
@LRO,因为你显然比通过谷歌拖网要快得多...... ;)
-
使用
unsigned char可能比简单的char更好。您的程序可能会链接到在没有-funsigned-char的情况下编译的代码。如果您依赖无符号字节,则在代码中而不是在编译器选项中表达它更安全。 -
@Keith -- 这是我在这里读到的最疯狂的评论。纯文本 ascii 文件不知道字节是有符号还是无符号,更不用说内存了。某些平台默认将 char 设置为 unsigned。 char 数据类型规范被编写为对开始时的签名不是很特别。
-
@B.Nadolson:如果您认为我的 cmets 是最疯狂的,那您一定没有读过很多 cmets。问题不是关于 ASCII 文本文件,而是关于类型
char。char类型 对它的签名非常特别。在某些实现上,它是特别签名的;在其他人身上,它特别没有签名。如果签名很重要,您应该使用signed char或unsigned char;这就是它们存在的原因。