過去に私は Visual Studio 2010/2013/2015 を使用しており、この構文は可能でした:
char* szString = "This works!";
g++ をインストールし、SlickEdit を IDE として使用しているため、コーディングのライフスタイルを Linux に移行することにしました。
その言葉はもう通用しないようです。誰でも理由を述べてもらえますか?
ただし、これは機能します:
char strString[] = "This works!";
エラーはc ++ 11のものです。
なぜこれが起こるのか誰にも分かりますか?それを修正する方法ではなく、私のワークスペースには c++11 コンパイラをインストールする方法がないため、コンパイラの動作の背景に何か関係があるかどうかに興味があります。コードの最初の行について私が知っていることは、スタック上に定数変数を作成し、その ESP の値に向けて設定する新しいポインターを作成することですが、2 行目では、定数変数の文字数をカウントしてから結果として最後に null ターミネータを設定します。
ああ、もう1つ->最初のタイプが{char * &}で、2番目のタイプが{char(*) [12]であるため、最初のタイプがGCC/GPPで設定されている方法にも違いがあるようです[12] }、それについても説明はありますか?ありがとう!