gpt4 book ai didi

c - 位字段更加优化

转载 作者:行者123 更新时间:2023-11-30 14:38:00 25 4
gpt4 key购买 nike

我正在为 16 位微处理器编写一些代码。我的内存非常有限,只有 128 KB。适用于 MSP430 的 IAR C/C++ 编译器我需要实现一些代码来节省一些内存。

我尝试用这个 C 特性实现来实现它。

struct {
unsigned int widthValidated : 1;
unsigned int heightValidated : 1;
} status;

但是对于这段代码,我仍然只使用 16 位字的 1 位。

我的目标是为两个 8 位变量使用相同字大小的内存位。第一个变量应位于第二个变量左侧 8 位。

struct {
unsigned int widthValidated : 8; //8 bits for this
unsigned int heightValidated : 8; // 8 left over for this
} status;

这可能吗?是否有任何实现,或者是否有 C 库用于此?我应该怎样做呢?

最佳答案

您不应该将位字段用于任何目的,尤其是内存映射,因为它们的标准化程度很低。

您应该做的是使用 stdint.h 类型。声明两个 uint8_t 变量。通过在声明变量时仔细选择必要的类型,可以节省微 Controller 中的内存。

例如,在有限微 Controller 的专业程序中,典型的 for 循环编写为 for(uint8_t i=0; ... 而不是“草率打字”for(int i=0; ....

诀窍是:每当您声明任何变量时,总是考虑该变量可能获得的最大值是多少。通过这样做,您可以节省内存并防止溢出错误。

关于c - 位字段更加优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56888483/

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