C ++ là một ngôn ngữ lập trình:
a) Đó là ngôn ngữ "tốt hơn" C b) Đó là ngôn ngữ hướng đối tượng c) Đó là ngôn ngữ cho phép chúng tôi viết chương trình chung
Mặc dù tất cả các tính năng này có thể được sử dụng riêng nhưng kết quả tốt nhất đạt được khi ba trong số chúng được sử dụng cùng một lúc. Tuy nhiên, nếu bạn chọn chỉ chọn một trong số đó, chất lượng của phần mềm nhúng sẽ tăng lên.
a) Đó là C "tốt hơn"
C ++ là một ngôn ngữ đánh máy mạnh mẽ; mạnh hơn C. Các chương trình của bạn sẽ được hưởng lợi từ tính năng này.
Một số người sợ con trỏ. C ++ bao gồm các tài liệu tham khảo. Chức năng quá tải.
Và đáng để nói: Không có tính năng nào trong số này phát sinh trong các chương trình lớn hơn hoặc chậm hơn.
b) Đó là một ngôn ngữ hướng đối tượng
Ai đó đã nói trong bài đăng này rằng trừu tượng hóa máy trong vi điều khiển không phải là một ý tưởng tốt. Sai lầm! Tất cả chúng tôi, các kỹ sư nhúng, đã luôn trừu tượng hóa máy, chỉ với các sintax khác của C ++. Vấn đề tôi thấy với lập luận này là một số lập trình viên không quen nghĩ về các đối tượng, đó là cách họ không thấy được lợi ích của OOP.
Bất cứ khi nào bạn sẵn sàng sử dụng thiết bị ngoại vi của vi điều khiển, có khả năng thiết bị ngoại vi đã được trừu tượng hóa cho chúng tôi (từ chính bạn hoặc bên thứ ba) dưới dạng trình điều khiển thiết bị. Như tôi đã nói trước đó, trình điều khiển đó sử dụng sintax C, như ví dụ tiếp theo hiển thị (được lấy trực tiếp từ ví dụ NXP LPC1114):
/ * Thiết lập hẹn giờ cho khớp và ngắt tại TICKRATE_HZ * /
Chip_TIMER_Reset (LPC_TIMER32_0);
Chip_TIMER_MatchEnableInt (LPC_TIMER32_0, 1);
Chip_TIMER_SetMatch (LPC_TIMER32_0, 1, (timerFreq / TICKRATE_HZ2));
Chip_TIMER_ResetOnMatchEnable (LPC_TIMER32_0, 1);
Chip_TIMER_Enable (LPC_TIMER32_0);
Bạn có thấy sự trừu tượng? Vì vậy, khi sử dụng C ++ cho cùng một mục đích, sự trừu tượng hóa được đưa lên cấp độ tiếp theo thông qua cơ chế trừu tượng hóa và đóng gói của C ++, với chi phí bằng không!
c) Đó là ngôn ngữ cho phép chúng tôi viết chương trình chung chung
Các chương trình chung được thực hiện thông qua các mẫu và các mẫu cũng không có chi phí cho các chương trình của chúng tôi.
Bên cạnh đó, đa hình tĩnh đạt được với các mẫu.
Phương pháp ảo, RTTI và ngoại lệ.
Có một sự thỏa hiệp khi sử dụng các phương thức ảo: phần mềm tốt hơn so với một số hình phạt trong hiệu suất. Tuy nhiên, hãy nhớ rằng liên kết động có khả năng được thực hiện bằng cách sử dụng bảng ảo (một mảng các con trỏ hàm). Tôi đã làm điều tương tự ở C rất nhiều lần (ngay cả trong một cơ sở thường xuyên), vì vậy tôi không thấy những hạn chế trong việc sử dụng các phương thức ảo. Hơn nữa, các phương thức ảo trong C ++ thanh lịch hơn.
Cuối cùng, một lời khuyên về RTTI và các trường hợp ngoại lệ: KHÔNG SỬ DỤNG THEM trong các hệ thống nhúng. Tránh chúng bằng mọi giá !!