C プログラミングでは、さまざまな構文エラーに何度も遭遇します。より一般的な問題の 1 つは、関数内で関数を定義することです。ご存知のとおり、関数の定義は通常、グローバル スコープで行われます。ただし、関数内で関数を定義することは C では許可されていないため、この構文エラーが発生すると、コンパイラーはコードを渡すことができなくなります。
この問題の原因は、関数内の定義により、コンパイラがそのスコープを認識できないことです。特に内部関数と外部関数のパラメータ名が同じ場合、コンパイラが混乱する可能性があります。したがって、この問題を解決するには、内部関数の定義をそれが含まれている関数の外に移動し、外部関数の外側で定義する必要があります。
この問題を解決する方法を説明しましょう。たとえば、次のプログラムでは、整数の 2 乗を計算する関数 int square(int x) を定義します。この関数の内部定義では外部関数のパラメーター名が使用されており、それらが適切なスコープに配置されていませんでした。
#include<iostream> using namespace std; int main() { int x = 5; int square(int x) { return x * x; } int result = square(x); cout << "The square of " << x << " is " << result << endl; return 0; }
このプログラムをコンパイルすると、コンパイラは次のエラーを生成します:
error: expected constructor, destructor, or type conversion before ‘(’ token int square(int x)
この問題を解決するには、内部関数を移動して外部関数の外側に配置する必要があります。修正されたプログラムは次のとおりです。
#include<iostream> using namespace std; int square(int x) //将函数square()移到外部函数之外 { return x * x; } int main() { int x = 5; int result = square(x); cout << "The square of " << x << " is " << result << endl; return 0; }
さて、関数 square() を外部関数の外に移動し、その内部定義を削除しました。このようにして、プログラムを正常にコンパイルして実行できます。
構文エラーを修正するときは、関数定義に対する C の要件と制限を常に念頭に置く必要があります。関数定義を適切なスコープに配置すると、いくつかの一般的な構文エラーを回避できます。コードを記述するときは、注意深く厳密に、プログラムが正常に動作するように、起こり得る問題に常に注意を払う必要があります。
以上がC++ 構文エラー: 関数内での関数定義は許可されていません。修正方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。