gpt4 book ai didi

c - 警告 : ‘noreturn’ function does return

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:15 27 4
gpt4 key购买 nike

我正在做一个线程库(使用 uncontext.h 改变上下文)。我的函数是void类型的,不能返回。但是即使我不返回,编译时也会出现这个警告:

dccthread.c: In function ‘dccthread_init’:
dccthread.c:184:1: warning: ‘noreturn’ function does return [enabled by default]
}

这是函数的简化代码(没有一些细节):

void dccthread_init(void (*func), int param) {
int i=0;
if (gerente==NULL)
gerente = (dccthread_t *) malloc(sizeof(dccthread_t));

getcontext(&gerente->contexto);
gerente->contexto.uc_link = NULL;
gerente->contexto.uc_stack.ss_sp = malloc ( THREAD_STACK_SIZE );
gerente->contexto.uc_stack.ss_size = THREAD_STACK_SIZE;
gerente->contexto.uc_stack.ss_flags = 0;
gerente->tid=-1;

makecontext(&gerente->contexto, gerente_escalonador, 0);
if (principal==NULL)
principal = (dccthread_t *) malloc(sizeof(dccthread_t));

getcontext(&principal->contexto);
principal->contexto.uc_link = NULL;
principal->contexto.uc_stack.ss_sp = malloc ( THREAD_STACK_SIZE );
principal->contexto.uc_stack.ss_size = THREAD_STACK_SIZE;
principal->contexto.uc_stack.ss_flags = 0;
makecontext(&principal->contexto, func, 1, param);
swapcontext(&gerente->contexto, &principal->contexto);


}

请注意,我不会随时返回。但是 gcc 给我这个警告。有谁知道问题出在哪里?

最佳答案

即使 void 函数返回,它也只是不返回一个return; 意味着它返回到上一个函数调用它的地方,有或没有新值。正如@Matthias 之前所说,任何函数在 C 语言的末尾都会自动返回。如果编译器到达函数的结束括号,它将返回。我相信你需要用另一个函数调用或类似的东西离开这个函数来消除警告。

希望对您有所帮助。

关于c - 警告 : ‘noreturn’ function does return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23452489/

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