gpt4 book ai didi

c - C 中的静态结构不改变值

转载 作者:行者123 更新时间:2023-11-30 17:51:19 25 4
gpt4 key购买 nike

为了在程序执行期间保留变量(字符数组)的值,我有以下代码用于更大的代码。然而,我发现,当计数器重置为零时,incrementCtr 没有任何效果。您能指出这里使用 static 的正确方法吗?

    static typedef struct {
uint8_t data[8];
}count_t;

......
static count_t count;

static void incrementCtr(count_t* count) {
int i;
for (i = sizeof(count->data) - 1; i >= 0; --i) {
if (++count->data[i] != 0) {
break;
}
}
}

void myroutine{
.....


....

count_t *counter;
counter = &count;
uint32_t len = sizeof(*counter);
memset(counter ,0,sizeof(*counter));
for (i = 0; i < len; i++){
printf("counter->data[%d] = %02X\n", i, counter->data[i]);
}
.......
do {
.......
incrementCtr(counter);
for (i = 0; i < len; i++){
printf("counter->data[%d] = %02X\n", i, counter->data[i]);
}
} while (true);
return 0;
}

第一个 printf 显示所有字节 0,而在第二个 printf 中,字节值增加 1。但随后计数器重新初始化为 0 :(

最佳答案

如果您在头文件中定义了static count_t count;,则可能会发生这种情况。在这种情况下,包含此 header 的任何翻译单元(cpp 文件)都有单独的 count 变量。

关于c - C 中的静态结构不改变值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16789103/

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