[解決済み] なぜargcは定数でないのですか?
2022-10-21 08:39:56
質問
int main( const int argc , const char[] const argv)
として
有効なC++言語
Item#3 に "Use const whenever possible" とあるように、これらのパラメータを "constant" にしてはどうだろうかと考え始めました。
const
というのはどうでしょう?
の値が、"quote "であるようなシナリオはありますか?
argc
の値がプログラム内で変更されるようなシナリオはありますか?
どのように解決するのですか?
この場合、歴史が要因になります。 C ではこれらの入力を "not constant" として定義し、既存の C コードとの (かなりの部分の) 互換性は、C++ の初期の目標でした。
いくつかの UNIX API、たとえば
getopt
のように、実際に
argv[]
であるため
const
にもできません。
(余談) 面白いことに
getopt
のプロトタイプは、それが
argv[]
を修正しませんが、指された文字列を修正する可能性があることを示唆しています。
getopt
はその引数を並べ替え、そして
は自分たちがいたずら好きであることを知っているようです。
. Open Group の man ページには、この並べ替えについては書かれていません)。
置くこと
const
に
argc
と
argv
を使ってもあまり意味がありませんし、以下のような昔ながらのプログラミングのやり方も無効になってしまいます。
// print out all the arguments:
while (--argc)
std::cout << *++argv << std::endl;
私はC言語でこのようなプログラムを書いたことがあります。 から例をコピーしました。 どこか .
関連
-
[解決済み] テスト
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] 要素ごとの加算は、結合ループよりも分離ループの方がはるかに高速なのはなぜですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] なぜテンプレートはヘッダーファイルでしか実装できないのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] Pythonで定数を作成するにはどうすればよいですか?
-
[解決済み] int argc, char *argv[] とはどういう意味ですか?
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】識別子 "string "は未定義?
-
[解決済み] error: 'ostream' does not name a type.
-
[解決済み】Cygwin Make bash コマンドが見つかりません。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】C++の余分な資格エラー
-
[解決済み] [Solved] インクルードファイルが開けません。'stdio.h' - Visual Studio Community 2017 - C++ Error
-
[解決済み】指定範囲内の乱数で配列を埋める(C++)
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] 関数のパラメータに 'const' を使用する