Rumah > pembangunan bahagian belakang > C++ > Adakah `main()` Sentiasa Menandakan Permulaan Sebenar bagi Perlaksanaan Program C?

Adakah `main()` Sentiasa Menandakan Permulaan Sebenar bagi Perlaksanaan Program C?

Patricia Arquette
Lepaskan: 2024-12-05 09:55:15
asal
675 orang telah melayarinya

Does `main()` Always Mark the True Beginning of a C   Program's Execution?

Adakah main() Benar-benar Titik Permulaan Program C?

Standard C, dalam seksyen 3.6.1/1, mengisytiharkan bahawa program mesti mempunyai fungsi global bernama utama, yang berfungsi sebagai titik permulaan yang ditetapkan. Walau bagaimanapun, analisis lanjut dan contoh kod ilustrasi telah mempersoalkan kesahihan pernyataan ini.

Pertimbangkan kod berikut:

int square(int i) { return i*i; }
int user_main()
{ 
    for ( int i = 0 ; i < 10 ; ++i )
           std::cout << square(i) << endl;
    return 0;
}
int main_ret= user_main();
int main() 
{
        return main_ret;
}
Salin selepas log masuk

Kod ini mencapai tujuan yang dimaksudkan: ia mengeluarkan petak daripada integer dari 0 hingga 9. Walau bagaimanapun, aspek yang membingungkan terletak pada fakta bahawa fungsi user_main() dilaksanakan sebelum main(), iaitu kononnya titik permulaan program. Menyusun kod ini dengan pilihan -pedantic menggunakan GCC 4.5.0 tidak menimbulkan ralat atau amaran.

Pemerhatian ini menimbulkan soalan: adakah kod ini mematuhi Standard?

Untuk menjawab soalan ini, kita mesti mendalami maksud frasa "permulaan program." Piawaian mentakrifkan istilah ini khusus untuk konteks Piawaian itu sendiri. Ia tidak menegaskan bahawa tiada kod boleh dilaksanakan sebelum main(). Sebaliknya, ia menetapkan bahawa permulaan program ialah titik di mana main() bermula.

Dalam kes kod contoh ini, user_main() dijalankan sebelum atur cara "bermula," mengikut definisi disediakan oleh Standard. Oleh itu, kod ini mematuhi sepenuhnya. Mengikut reka bentuk, kod penting selalunya dilaksanakan sebelum main() dipanggil, termasuk contoh ini.

Oleh itu, salah tanggapan timbul daripada salah tafsir takrif Standard. Demi perbincangan Standard, user_main() dilaksanakan sebelum program "bermula", dan tingkah laku ini kekal mematuhi Standard sepenuhnya.

Atas ialah kandungan terperinci Adakah `main()` Sentiasa Menandakan Permulaan Sebenar bagi Perlaksanaan Program C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan