gpt4 book ai didi

固定位长度类型的c定义(可移植性)

转载 作者:行者123 更新时间:2023-11-30 18:24:07 26 4
gpt4 key购买 nike

自从编写任何 c 代码以来已经有一段时间了,但是我有一个想要从事的新项目,该项目需要以固定位长度(32 位)为单位处理数据文件。我想确保我可以定义一个固定的、可跨机器移植的 32 位类型。

我知道 limit.h 中的 CHAR_BIT 给出了 char 中的位数,而 sizefof() 函数给出了类型(例如 int)中的字符数,因此我可以轻松地将两者相乘以找到 char 中的位数例如一个 int 。我读到 CHAR_BIT 不一定总是“8”,并且知道 int 类型在不同处理器上可以有不同的大小。

在运行时,我考虑使用 switch 语句和 typedef,基于检查不同 int 类型的 CHAR_BIT 和 sizeof() 来定义自定义 32 位类型。

我想知道,这是否可以(应该?)用预处理器指令来完成?

  1. 您将如何执行此操作,以确保代码可移植并且始终提供 32 位的自定义类型?

  2. 出于好奇,您将如何定义任意位长度类型? (大概您可以定义的内容有一个上限?)

最佳答案

#include <stdint.h>对于 exact width integer types !

int32_t 有什么问题吗?和uint32_t ?这些是没有填充位的整数类型,并且恰好有 32 个值位 (uint32_t) 或 31 个值位 + 符号位 (int32_t)。如果存在的话,它们具有最大程度的便携性。

如果您需要至少 32 位,但未指定值位数的确切数量,请使用 (u)int_least32_t .

关于固定位长度类型的c定义(可移植性),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44326633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com