ホームページ  >  記事  >  バックエンド開発  >  C コードで「非標準構文」エラーが発生するのはなぜですか?

C コードで「非標準構文」エラーが発生するのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-02 01:25:30663ブラウズ

Why Am I Getting a

「非標準構文」エラーについて理解する

C でコードを作成するとき、プログラマーはよく「非標準構文」のようなエラーに遭遇します。このエラーは、C 言語で正式に認識されていない構文を使用して操作が実行された場合に発生します。

問題: メンバー関数ポインターが欠落しています

特定のケースでは、エラーは次のコードから発生します。 :

<code class="cpp">void TicTacToe::player1Move(string coordX) // ERROR
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}</code>

ここで、player1Move 関数は TicTacToe クラスのメンバー関数です。ただし、関数名は関数呼び出し構文を呼び出すことなく、単一の式として使用されます。 C の規約によれば、これはメンバー関数に対しては正しくありません。

解決策: Address-of 演算子の使用

メンバー関数へのポインターを正しく取得するには、address-of 演算子を使用する必要があります。演算子 (&)。この演算子は関数のメモリ位置への参照を作成し、関数に間接的にアクセスできるようにします。

コードの修正は次のとおりです。

<code class="cpp">void TicTacToe::player1Move(string coordX)
{
  cout << "Enter X: " << endl;
  cin >> coordX;
  _coordX = coordX;
}</code>

この変更により、player1Move 関数は次のようになります。を使用するプログラムの他の部分によって正しく呼び出されます。演算子は次のようになります:

<code class="cpp">TicTacToe Board;
Board.player1Move("1");</code>

以上がC コードで「非標準構文」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。