アカウント名:
パスワード:
> extern char *optarg;これと同じ宣言はgetopt.hの中に書いてあるので、getopt.hをインクルードしていれば自分で書く必要はありません。「getopt()とoptargを使うなら、必ずgetopt.hをインクルードして、自分で宣言を書いてはいけない」と憶える方が良いかもしれません。
どうしてもoptargについて何か書かずにはいられないのであれば
while ((option = getopt(argc, argv, "y:m:")) != -1) { switch (option) { case 'y' : year = atoi(optarg); break; /* 'optarg' is declared in getopt.h */ case 'm' : month = atoi(optarg); break; }}
みたいに、コメントを書きましょう。
あと、atoi()は使い方こそ簡単ですが、変換に失敗しても黙って無意味な整数を返す性悪な仕様で、たとえばatoi("123hoge")は123を返します。したがって誤入力には非常に弱いです。ご注意ください。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
宣言は要らない。 (スコア:1)
> extern char *optarg;
これと同じ宣言はgetopt.hの中に書いてあるので、getopt.hをインクルードしていれば自分で書く必要はありません。
「getopt()とoptargを使うなら、必ずgetopt.hをインクルードして、自分で宣言を書いてはいけない」と憶える方が良いかもしれません。
どうしてもoptargについて何か書かずにはいられないのであれば
みたいに、コメントを書きましょう。
あと、atoi()は使い方こそ簡単ですが、変換に失敗しても黙って無意味な整数を返す性悪な仕様で、
たとえばatoi("123hoge")は123を返します。したがって誤入力には非常に弱いです。ご注意ください。