C và C ++ có nhiều điểm khác biệt và không phải tất cả mã C hợp lệ đều là mã C ++ hợp lệ.
(Theo "hợp lệ" Tôi có nghĩa là mã tiêu chuẩn với hành vi được xác định, nghĩa là không cụ thể thực hiện / không xác định / v.v.)
Có kịch bản nào trong đó một đoạn mã hợp lệ trong cả C và C ++ sẽ tạo ra hành vi khác nhau khi được biên dịch với trình biên dịch chuẩn trong mỗi ngôn ngữ không?
Để làm cho nó trở thành một so sánh hợp lý / hữu ích (Tôi đang cố gắng học một cái gì đó thực tế hữu ích, không cố gắng tìm ra những sơ hở rõ ràng trong câu hỏi), hãy giả sử:
- Không có gì liên quan đến tiền xử lý (có nghĩa là không có hack
#ifdef __cplusplus
, pragma, v.v.) - Bất cứ điều gì được định nghĩa triển khai đều giống nhau ở cả hai ngôn ngữ (ví dụ: giới hạn số, v.v.)
- Chúng tôi đang so sánh các phiên bản hợp lý gần đây của từng tiêu chuẩn (ví dụ: C ++ 98 và C90 trở lên)
Nếu các phiên bản có vấn đề, thì vui lòng đề cập đến phiên bản nào của mỗi phiên bản tạo ra hành vi khác nhau.