определение неиспользуемых параметров в C
Мне нужно использовать pthreat, но мне не нужно передавать какой-либо аргумент функции. Поэтому я передаю NULL функции на pthread_create. У меня есть 7 pthreads, поэтому компилятор gcc предупреждает меня, что у меня есть 7 неподходящих параметров. Как я могу определить эти 7 параметров как неиспользуемые в программировании на C? Если я не определю эти параметры как неиспользуемые, это вызовет какие-либо проблемы? Заранее спасибо за ответы.
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;
}
5 ответов
Вы можете привести параметр к void
такой:
void *timer1_function(void * parameter1) {
(void) parameter1; // Suppress the warning.
// <statement>
}
GCC имеет средство "атрибуты", которое можно использовать для маркировки неиспользуемых параметров. Использовать
void *timer1_function(__attribute__((unused))void *parameter1)
по умолчанию GCC не выдает это предупреждение, даже с-Wall. Я думаю, что обходной путь, показанный в другом вопросе, может потребоваться, когда у вас нет контроля над средой, но если вы это сделаете, просто удалите флаг (-Wunused-parameter
).
Это прекрасно, не используя параметр в теле функции.
чтобы избежать предупреждения компилятора (если таковое имеется в вашей реализации), вы можете сделать следующее:
void *timer1_function(void * parameter1)
{
// no operation, will likely be optimized out by the compiler
parameter1 = parameter1;
}
два часто используемых методов:
1) опустить имя неиспользуемого параметра:
void *timer1_function(void *) { ... }
2) прокомментируйте имя параметра:
void *timer1_function(void * /*parameter1*/) { ... }
-- Крис