私の主な機能は次のとおりです。
int main(int argc, char const *argv[])
{
huffenc(argv[1]);
return 0;
}
コンパイラは警告を返します。
huffenc.c:76: warning: passing argument 1 of ‘huffenc’ discards qualifiers from pointer target type
参考までに、huffenc
はchar*
入力を受け取り、関数は./huffenc senselessness
を介してサンプル入力「無意味」で実行されます。
この警告はどういう意味ですか?
これは、const
引数を非const
引数を取る関数に渡すことを意味します。これは、明らかな理由で潜在的に悪いことです。
huffenc
はおそらくconst
以外の引数を必要としないので、const char*
。ただし、main
の定義は非標準です。
C99標準のセクション5.1.2.2.1(プログラムの起動)には、次のように記載されています。
プログラムの起動時に呼び出される関数の名前はmainです。実装は、この関数のプロトタイプを宣言していません。これは、戻り型intで定義され、パラメーターはありません。
int main(void) { /* ... */ }
または2つのパラメーター(ここではargcおよびargvと呼ばれますが、宣言された関数に対してローカルであるため、任意の名前を使用できます):
int main(int argc, char *argv[]) { /* ... */ }
または同等のもの; 9)またはいくつかの他の実装で定義された方法で。
そして言う...
...パラメータargcとargv、およびargv配列が指す文字列プログラムによって変更可能である必要があります、およびプログラムの起動とプログラムの終了の間で最後に格納された値を保持します。