c++ - 可移植代码 - 每个字符的位数

标签 c++ c char bit

我知道 C/C++ 标准只保证每个字符最少 8 位,理论上 9/16/42/其他任何东西都是可能的,因此所有关于编写可移植性的网站代码警告不要假设 8bpc。我的问题是这到底有多“不便携”?

让我解释一下。在我看来,系统分为 3 类:

  1. 计算机 - 我是指运行 Mac/Linux/Windows/Unix/*nix/posix/whatever 的台式机、笔记本电脑、服务器等(我知道这个列表并不完全正确,但你明白了)。听到 char 不是 exactly 8 位的任何此类系统,我会感到非常惊讶。 (如有错误请指正)
  2. 带有操作系统的设备 - 这包括智能手机和此类嵌入式系统。虽然我不会很惊讶发现这样一个 char 超过 8 位的系统,但迄今为止我还没有听说过(如果我不知道,请再次通知我)
  3. 裸机 - 录像机、微波炉、旧手机等。在这个领域我没有半点经验,所以在这里什么都有可能发生。但是,我真的需要我的代码在我的 Windows 桌面和微波炉之间跨平台吗?我是否有可能拥有两者共有的代码?

底线:是否有常见的(超过 %0.001)平台(在上面的类别 1 和 2 中),其中 charnot 8 位?我的上述猜测是真的吗?

最佳答案

使用限制.h

CHAR_BIT

http://www.cplusplus.com/reference/clibrary/climits/

另外,当您想使用给定的大小时,请使用 stdint.h

关于c++ - 可移植代码 - 每个字符的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11600378/

相关文章:

string - 如何在 Rust 中将 char 连接成字符串?

c++ - 使用 C++ 中的 Protocol Buffer 将文件上传到服务器

c++ - 用getline()填充结构字段

将迭代算法转换为递归算法

c - LWIP Makefile 错误

c++ - 字符串类中指针和整数的比较 - C++

c++ - 修改 Windows 上的堆栈、TIB 和异常

C++:编译错误 - "no .eh_frame_hdr table will be created"

c - 数组中包含的输入序列

java - 在每个元音前添加文本