gpt4 book ai didi

c - 将错误的无效操作数编译为二进制&&(具有 'int'和 'pthread_t' {aka 'struct '})

转载 作者:行者123 更新时间:2023-12-03 07:39:16 24 4
gpt4 key购买 nike

我正在尝试编译一些C代码,但出现此错误
错误:对二进制&&无效的操作数(具有'int'和'pthread_t'{aka'struct“<” anonymous>'})
有问题的代码是

static void kill_mining(void)
{
struct thr_info *thr;
int i;

forcelog(LOG_DEBUG, "Killing off mining threads");
/* Kill the mining threads*/
for (i = 0; i < mining_threads; i++) {
pthread_t *pth = NULL;

thr = get_thread(i);
if (thr && PTH(thr) != 0L)
pth = &thr->pth;
thr_info_cancel(thr);
if (pth && *pth) <---- This is where it goes wrong
pthread_join(*pth, NULL);
}
}
我不知道C,所以我对如何解决这个问题有点迷茫。任何帮助都将被申请。
谢谢
编辑:代码来自 https://github.com/ckolivas/cgminer及其cgminer.c文件。

最佳答案

给定

pthread_t *pth;
用以下方式解引用 pth
if (pth && *pth)
是错的。 pthread_tdefined under POSIX in sys/types.h :

The <sys/types.h> header shall define at least the following types:

 .
.
.
pthread_t
Used to identify a thread.
.
.
.

增加了警告

All of the types shall be defined as arithmetic types of an appropriate length, with the following exceptions:

 .
.
.
pthread_t
.
.
.

pthread_t变量视为可以作为 bool(boolean) 表达式的一部分进行评估的对象是不正确和错误的。

关于c - 将错误的无效操作数编译为二进制&&(具有 'int'和 'pthread_t' {aka 'struct <anonymous>'}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65135461/

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