gpt4 book ai didi

c - 为什么会出现此警告( no return ,函数返回非 void )?

转载 作者:行者123 更新时间:2023-11-30 17:33:09 27 4
gpt4 key购买 nike

void *rastertask()
{
struct sched_param sparm;
memset(&sparm, 0, sizeof(sparm));
sparm.sched_priority = 10; /* 0 = lowest, 99 = highest */

sched_setscheduler(
0 /* pid, 0 ==> this process */,
SCHED_RR /* policy */,
&sparm);

unsigned int n_loop;
for(n_loop=0;;n_loop++) {
struct timespec ts_start, ts_end;
clock_gettime(CLOCK_REALTIME, &ts_start);

TASK1(Task2ms_Raster); /* gets called every 2ms */
if( (n_loop % 5) == 0) {
TASK2(Task10ms_Raster); /* get called every 5 * 2ms = 10ms */
}
if( (n_loop % 50) == 0) {
TASK3(Task100ms_Raster); /* get called every 50 * 2ms = 100ms */
}

if( (n_loop % 250) == 0 ) {
/* reset loop counter when smallest common
* multiple of timing grid has been reached */
n_loop = 0;
}

clock_gettime(CLOCK_REALTIME, &ts_end);
useconds_t const tasks_execution_time = delta_t_us(&ts_start, &ts_end);

if( tasks_execution_time >= MS_to_US(2) ) {
/* report an error that tasks took longer than 2ms to execute */
}

/* wait for 2ms - task_execution_time so that tasks get called in
* a close 2ms timing grid */

else
usleep( MS_to_US(2) - tasks_execution_time );
}

}


int main(int argc, char *argv[])
{

pthread_t thread_id

if (pthread_create(&thread_id, NULL, &rastertask, NULL)) {
perror ("pthread_create");
exit (1);
}

return 0;
}

我正在主函数中创建一个线程。在函数中创建了一个调度程序,用于每 2 毫秒、10 毫秒和 100 毫秒调用一次任务。我在 void *rastertask() 中收到警告,因为在返回非 void 的函数中没有返回。

最佳答案

你 promise 返回一个空指针,但你没有。因此发出警告。

void* 与返回类型 void 不同。

您可能希望将函数定义为

void rastertask()

编辑:

好的,因此您需要将该函数定义为 void * 才能与 pthread_create() 一起使用。在这种情况下,您需要添加一个 return 语句,即使它会返回空指针。

关于c - 为什么会出现此警告( no return ,函数返回非 void )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23856895/

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