我需要使用pthreat但我不需要将任何参数传递给函数。因此,我将NULL传递给pthread_create上的函数。我有7个pthreads,所以gcc编译器警告我有7个未完成的参数。如何在C编程中将这7个参数定义为未使用?如果我没有将这些参数定义为未使用,是否会导致任何问题?提前感谢您的回复。
void *timer1_function(void * parameter1){
//<statement>
}
int main(int argc,char *argv[]){
int thread_check1;
pthread_t timer1;
thread_check1 = pthread_create( &timer1, NULL, timer1_function, NULL);
if(thread_check1 !=0){
perror("thread creation failed");
exit(EXIT_FAILURE);
}
while(1){}
return 0;
}
答案 0 :(得分:18)
您可以将参数转换为void
,如下所示:
void *timer1_function(void * parameter1) {
(void) parameter1; // Suppress the warning.
// <statement>
}
答案 1 :(得分:17)
GCC有一个“属性”工具,可用于标记未使用的参数。使用
void *timer1_function(__attribute__((unused))void *parameter1)
答案 2 :(得分:2)
默认情况下,GCC不会产生此警告,即使使用-Wall也不会。我认为当您无法控制环境时可能需要在其他问题中显示的解决方法,但如果您这样做,只需删除标记(-Wunused-parameter
)。
答案 3 :(得分:1)
两种常用技术:
1)省略未使用参数的名称:
void *timer1_function(void *) { ... }
2)注释掉参数名称:
void *timer1_function(void * /*parameter1*/) { ... }
- 克里斯
答案 4 :(得分:0)
完全没有在函数体中使用参数。
要避免编译器警告(如果您的实现中有任何警告),您可以执行以下操作:
void *timer1_function(void * parameter1)
{
// no operation, will likely be optimized out by the compiler
parameter1 = parameter1;
}