Wall オプションを有効にしてソース コードをコンパイルすると、特定の関数を呼び出すと次のような警告が表示されるのはなぜですか。
warning: incompatible implicit declaration of built-in function 'strcpy' [enabled by default]|"
関数を調べてヘッダーを追加すると、警告が消えました。(明らかに) 必要ないときにヘッダーを追加することの長所と短所は何ですか?
「得意不得意」はありません。宣言された関数を使用する前に、常にヘッダーを含める必要があります。それ以外の場合は、完全なエラーと見なす必要があります。C が「暗黙の宣言」を許可しているという事実は、実際のコードで決して使用してはならない歴史的な遺物です。
ヘッダーを含めるのを忘れた場合、コンパイラは関数の戻り値の型が であると想定しますint
。これは暗黙の宣言と呼ばれます。エラーが発生しやすく、C99 以降に削除されているため、使用しないことをお勧めします。
すべての strcpy、strcat は関数に組み込まれているため、ファイル string.h を直接検索します。