gpt4 book ai didi

c - 错误 : unsequenced modification and access to

转载 作者:太空宇宙 更新时间:2023-11-04 03:35:54 25 4
gpt4 key购买 nike

在此代码中:

#include <stdio.h>

#define SHIFT(value,num_of_bits) ((num_of_bits) > 0) ? \
((value) <<= (num_of_bits)) : ((value) >>= (-(num_of_bits)))

int main(void)
{
unsigned int w1 = 0177777u, w2 = 0444u;

printf("SHIFT(w1,5) = %o\tw1 << 5 = %o\n", SHIFT(w1,5), w1 << 5);

return 0;
}

这里使用clang编译时,出现如下错误:

错误:未按顺序修改和访问 w1

但是当我使用gcc 编译它时,没有产生任何错误。

我在这里看到这个问题unsequenced modification and access to pointer但答案实际上并没有帮助。所以我不明白,为什么会这样?这个错误是什么意思?

最佳答案

那是因为您正试图修改 SHIFT 定义中的第一个参数 value。尝试修改宏如下:

#define SHIFT(value,num_of_bits) ((num_of_bits) > 0) ? \
((value) << (num_of_bits)) : ((value) >> (-(num_of_bits)))

关于c - 错误 : unsequenced modification and access to <argument>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32828872/

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