2016-11-24 14 views
3

gcc 4.8.4 -Wall -Wextra -Wpedanticを使用して、Cで未使用のパラメータ警告を取り除くにはどうすればよいですか?実行可能ファイル名にargvを使い、argcを必要としません。gcc 4.8.4 [-Wunused-parameter]

私は

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

をすれば、私はこの警告を得る:過去に

abc.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter] 

私は単なる警告を取り除くために

int main(int, char *argv[]) 

をやったが、その月てきましたC + +されている。今、私はエラーを取得する:

abc.c:5:1: error: parameter name omitted 

取得(gccの警告がオンになって)のargcにアクセスしていないため、警告をARGVにアクセスしないようにする方法はありますか?

+0

のように、' 'main'内のステートメントとして(定義自体には適用されません)。 –

+0

@WeatherVane int main((void)argc、char * argv [])はコンパイルエラーを返します – Scooter

+0

コメントを更新しました。 –

答えて

4

私のコメントは不明であった: `(無効)のargcとこの

int main(int argc, char *argv[]) 
{ 
    char *prog = argv[0]; 
    (void)argc; 
    return 0; 
} 
+0

興味深い。それは単純にキャストを実行し、それをどこにも格納しませんか、それともそれ以上ですか?いくつかの明確化がそれに値するかもしれない。 – saeleko

+0

@LudaOtaku私はいつも 'argc;'を '(void)'なしで書いていましたが、関数の引数は必要ありませんでした。申し訳ありませんが、参照はありません。 –

+0

それは十分だと思いますが、これは単に未使用の文であり、この変数をある程度無視するようにコンパイラに指示する特殊な構文ではありません。私は通常、私がまだ必要としない変数をコメントアウトし、意図的に関数の引数についての警告を残すので、私は混乱していました。しかし、argvで十分なコマンドラインパラメータが渡されない場合にsegfaultにつながる可能性があるので、私はまだメイン用にはすべきではないと考えています。デバッグではなく、リリースではありません。 – saeleko