C言語,コマンドライン引数を使用しない場合に、警告を回避する方法

スポンサーリンク

鍛錬 222

C言語,コマンドライン引数を使用しない場合に、警告を回避する方法

C言語の main() でコマンドライン引数を使用しない場合、コンパイル時に「unused parameter」と変数未使用の警告が出ますが、これを回避する方法についてです。

コマンドライン引数を使用する場合

まずは、コマンドライン引数を使用する場合についてです。

main() でコマンドライン引数を取得する場合、main() の引数に argc と argv を使用します。

以下のプログラム argc_argv.c は、コマンドライン引数を取得後にその内容を表示します。

// include
#include <stdio.h>

// main
int main(int argc, char *argv[])
{
	printf("argc = %d\n", argc);
	printf("argv[0] = %s\n", argv[0]);
	printf("argv[1] = %s\n", argv[1]);
	printf("argv[2] = %s\n", argv[2]);
	
	return 0;
}
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra argc_argv.c -o argc_argv
***@ubuntu:~/***/test/c$ ./argc_argv APPLE ORANGE
argc = 3
argv[0] = ./argc_argv
argv[1] = APPLE
argv[2] = ORANGE

コマンドライン引数を使用しない場合

コマンドライン引数を使用しない場合の記述方法の一つとして、main(void) と記述する方法がありますが、void を記述せずに argc と argv を使用した場合、コンパイル時に変数未使用(unused parameter)の警告が出ます。

以下のプログラム argc_argv_2.c は、argc と argv を使用していないため、コンパイル時に警告が出ます。

// include
#include <stdio.h>

// main
int main(int argc, char *argv[])
{
	printf("Hello, Word");
	
	return 0;
}
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra argc_argv_2.c -o argc_argv_2
argc_argv_2.c: In function ‘main’:
argc_argv_2.c:6:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
 int main(int argc, char *argv[])
              ^
argc_argv_2.c:6:26: warning: unused parameter ‘argv’ [-Wunused-parameter]
 int main(int argc, char *argv[])
                          ^

解決方法

コンパイル時に変数未使用(unused parameter)の警告を出さないようにするためには、変数を void でキャストします。

以下のプログラム argc_argv_3.c は、argc と argv を void でキャストしているため、コンパイル時に警告が出ません。

// include
#include <stdio.h>

// main
int main(int argc, char *argv[])
{
	(void)argc;
	(void)argv;
	
	printf("Hello, Word\n");
	
	return 0;
}
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -Wall -Wextra argc_argv_3.c -o argc_argv_3
***@ubuntu:~/***/test/c$ ./argc_argv_3
Hello, Word
スポンサーリンク

シェアする

フォローする