Tôi nghe nói rằng trong C, main() là reentrant, trong khi trong C + + thì không.Hàm main() có tham gia lại không?
Điều này có đúng không? Kịch bản của việc nhập lại hàm main() là gì?
Tôi nghe nói rằng trong C, main() là reentrant, trong khi trong C + + thì không.Hàm main() có tham gia lại không?
Điều này có đúng không? Kịch bản của việc nhập lại hàm main() là gì?
Triển khai sớm C++, dựa trên bản dịch cho C, đã triển khai các nhà thầu toàn cầu thông qua thêm một cuộc gọi hàm vào đầu main
. Trong quá trình thực hiện như vậy, gọi lại main
một lần nữa sẽ chạy lại các ctors toàn cầu, dẫn đến tàn phá, do đó, nó chỉ đơn giản là bị cấm làm như vậy. Mặt khác,
C không có lý do gì để cấm gọi main
và luôn có thể theo truyền thống.
Vì khi nào hữu ích, tôi sẽ nói "hiếm khi". Hầu hết các chương trình tôi đã nhìn thấy được gọi là main
là các mục IOCCC.
Tôi không nghĩ rằng bạn có nghĩa là [reentrant] (http://en.wikipedia.org/wiki/Reentrancy_ (máy tính)). Tuy nhiên, đúng là bạn được phép gọi 'main' trong C và bạn không được phép gọi nó trong C++. –