2012-05-22 38 views
13

Tôi rất thẩm vấn và bị lúng túng bởi this commit on android's dalvik platform được đẩy một năm trước.Lợi ích của việc biên dịch mã C với giao diện C++ của gcc

Mở rộng tệp đã được thay đổi thành phần mở rộng C++ để "di chuyển trình thông dịch sang C++" - sử dụng giao diện người dùng C++ của trình biên dịch.

Lợi ích của thay đổi này có thể là gì? Dalvik Platform là 100% C & dự án asm và không phải bất kỳ tính năng C++ nào được sử dụng.

+2

C++ có an toàn loại tốt hơn/chặt chẽ hơn và quy ước gọi khác (hiệu quả hơn) –

Trả lời

3

Tôi chỉ có thể suy đoán, nhưng xem xét cách hệ thống Android đã phát triển phức tạp, các tính năng phạm vi của C++ (lớp và không gian tên) có thể làm cho cơ sở mã dễ quản lý hơn.

EDIT

Thậm chí nếu các dự án hiện tại không sử dụng bất kỳ tính năng ++ C, họ có thể chỉ đơn giản là được lên kế hoạch trước.

Ngoài một số khác biệt nhỏ (cụ thể là một số tham số quy ước hầu hết mọi người tránh), mã nguồn C biên dịch thành C++ mà không sửa đổi. Điều đó được nói, trong một số vùng C++ cú pháp chặt chẽ hơn C (C cho phép bạn gán một con trỏ void cho một kiểu con trỏ khác mà không có một diễn viên; trong C++, đây là lỗi), và thực thi độ nghiêm ngặt này tránh các vấn đề trên đường. *

*) (Đó là một cái nhìn quá đơn giản, xem bình luận)

Một lý do nữa cho sự thay đổi có thể là bởi vì hầu hết sự phát triển hiện đại ủng hộ C++ trên C, một tập hợp phong phú hơn các công cụ có sẵn .

Suy đoán lại, nhưng khi sinh ra Android C có thể là lựa chọn duy nhất khả thi cho việc phát triển thiết bị nhúng và bây giờ hạn chế đó không còn là vấn đề nữa.

+0

Đó là phản ứng đầu tiên của tôi, nhưng tôi không tìm thấy bất kỳ tính năng C++ nào được sử dụng trong mã. –

+3

Không, C và C++ về cơ bản chỉ có giao diện tương thích và không biên dịch tương thích. Có rất nhiều, rất nhiều cạm bẫy nhỏ, bắt đầu từ phạm vi cho các loại đặt tên, để khái niệm khác nhau của hằng số thời gian biên dịch, và các công cụ như thế. –

+0

@ JensGustedt Điểm tốt! Miễn là một trong những yêu cầu cú pháp chặt chẽ hơn của C++, người ta có thể coi C là một tập hợp con của C++ không? –

Các vấn đề liên quan