8

pthreatを使用する必要がありますが、関数に引数を渡す必要はありません。したがって、pthread_createの関数にNULLを渡します。私は7つのpthreadを持っているので、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;
}
4

5 に答える 5

18

GCCには、未使用のパラメーターをマークするために使用できる「属性」機能があります。使用する

void *timer1_function(__attribute__((unused))void *parameter1)
于 2012-04-30T21:59:17.307 に答える
18

void次のようにパラメータをキャストできます。

void *timer1_function(void * parameter1) {
  (void) parameter1; // Suppress the warning.
  // <statement>
}
于 2012-04-30T21:52:52.507 に答える
2

一般的に使用される2つの手法:

1)未使用のパラメータの名前を省略します。

void *timer1_function(void *) { ... }

2)パラメータ名をコメントアウトします。

void *timer1_function(void * /*parameter1*/) { ... }

-クリス

于 2013-02-21T23:29:51.020 に答える
1

デフォルトでは、-Wallを使用しても、GCCはこの警告を生成しません。他の質問に示されている回避策は、環境を制御できない場合に必要になる可能性があると思いますが、制御できる場合は、フラグ(-Wunused-parameter)を削除するだけです。

于 2012-04-30T21:57:34.017 に答える
0

関数本体でパラメーターを使用しないのはまったく問題ありません。

コンパイラの警告(実装にある場合)を回避するには、次のようにします。

void *timer1_function(void * parameter1)
{
    // no operation, will likely be optimized out by the compiler
    parameter1 = parameter1;  
}
于 2012-04-30T21:54:53.010 に答える