Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Ralat sintaks C++: Definisi fungsi dalam fungsi tidak dibenarkan, bagaimana untuk membetulkannya?

Ralat sintaks C++: Definisi fungsi dalam fungsi tidak dibenarkan, bagaimana untuk membetulkannya?

PHPz
PHPzasal
2023-08-21 23:28:532483semak imbas

Dalam pengaturcaraan C++, banyak kali kita menghadapi ralat sintaks yang berbeza. Salah satu masalah yang lebih biasa ialah mentakrifkan fungsi dalam fungsi. Seperti yang kita semua tahu, mentakrifkan fungsi biasanya dilakukan dalam skop global. Walau bagaimanapun, mentakrifkan fungsi dalam fungsi tidak dibenarkan dalam C++, jadi sebaik sahaja ralat sintaks ini berlaku, pengkompil akan gagal untuk menghantar kod.

Sebab masalah ini ialah definisi dalam fungsi menyebabkan pengkompil gagal mengenali skopnya. Terutama apabila nama parameter fungsi dalaman dan luaran adalah sama, pengkompil boleh menjadi keliru. Jadi, untuk menyelesaikan masalah ini, kita perlu mengalihkan definisi fungsi dalam daripada fungsi yang ada di dalamnya dan mentakrifkannya di luar fungsi luar.

Mari tunjukkan cara untuk menyelesaikan masalah ini. Sebagai contoh, dalam atur cara berikut kita mentakrifkan fungsi int square(int x), yang mengira kuasa dua integer. Takrif dalaman fungsi ini menggunakan nama parameter fungsi luaran dan kami tidak meletakkannya dalam skop yang sesuai.

#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;
}

Apabila kita menyusun atur cara ini, pengkompil menghasilkan ralat berikut:

error: expected constructor, destructor, or type conversion before ‘(’ token
int square(int x)

Untuk menyelesaikan masalah ini, kita perlu mengalihkan fungsi dalam dan meletakkannya di luar fungsi luar. Program yang diubah suai adalah seperti berikut:

#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;
}

Kini, kami telah mengalihkan fungsi segi empat sama() di luar fungsi luaran dan memadamkan takrifan dalamannya. Dengan cara ini, kita boleh berjaya menyusun dan melaksanakan program.

Apabila membetulkan ralat sintaks, kita perlu sentiasa mengingati keperluan dan sekatan C++ pada definisi fungsi. Meletakkan definisi fungsi dalam skop yang sesuai boleh mengelakkan beberapa ralat sintaks biasa. Apabila menulis kod, kita harus berhati-hati dan teliti, dan sentiasa memberi perhatian kepada masalah yang mungkin berlaku untuk memastikan operasi normal program.

Atas ialah kandungan terperinci Ralat sintaks C++: Definisi fungsi dalam fungsi tidak dibenarkan, bagaimana untuk membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn