gpt4 book ai didi

c - 在需要整数的地方使用了聚合值 - 错误

转载 作者:行者123 更新时间:2023-11-30 14:48:32 41 4
gpt4 key购买 nike

我使用了以下代码作为函数的一部分

int encfile(FILE *fin, FILE *fout, aes *ctx, char* fn)
{ char inbuf[16], outbuf[16];
fpos_t flen;

...
fillrand(inbuf, 1);
..
inbuf[0] = ((char)flen & 15) | (inbuf[0] & ~15);

我收到错误

aggregate value used where an integer was expected 

inbuf[0] = ((char)flen & 15) | (inbuf[0] & ~15);

最佳答案

fpos_t 是实现定义的类型。它只是保证是非数组类型。这意味着它可能是一个结构(这似乎是您案例中的问题)。

无论哪种方式,fpos_t 都应该仅与 fsetposfgetpos 一起使用。您不应该用它执行任何操作。

对于您的情况,如果您需要知道文件的长度,您应该使用 fstat .

否则,如果您无权访问文件名,则可以使用 -

long int old_position = ftell(fp);
fseek(fp, 0, SEEK_END);
long int flen = ftell(fp);
fseek(fp, old_position, SEEK_SET);

这也不会破坏可移植性,因为 fseekftell是 C 标准的一部分。

关于c - 在需要整数的地方使用了聚合值 - 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50347827/

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