1. ホーム
  2. c++

[解決済み] 組込み開発でC++ではなくCを使う理由はありますか?[クローズド]

2023-04-02 03:02:16

質問

質問

私のハードウェアには、C++とC89の2つのコンパイラがあります。

私は、ポリモーフィズムなしで(vtables を避けるために)クラスを持つ C++ を使おうと思っています。 私が C++ を使いたいと思う主な理由は次のとおりです。

  • 私は、マクロ定義の代わりに「インライン」関数を使用することを好みます。
  • プレフィックスがコードを散らかすので、名前空間を使いたい。
  • 私は、主にテンプレートと冗長なキャストのために、C++が少し型安全であると見ています。
  • 私はオーバーロードされた関数とコンストラクタ(自動鋳造のために使用)が本当に好きです。

非常に限られたハードウェア(4kbのRAM)のために開発するとき、C89に固執する理由がありますか?

結論

ご回答ありがとうございました!本当に助かりました。

よく考えたら、主にCにこだわってみます。

  1. C 言語では実際のコードを予測することが容易で、これは RAM が 4kb しかない場合には本当に重要です。
  2. 私のチームは主に C の開発者で構成されているので、高度な C++ 機能は頻繁に使用されないでしょう。
  3. 私の C コンパイラー (C89) で関数をインライン化する方法を発見しました。

たくさんの良い答えを提供していただいたので、1つの答えを受け入れるのは難しいです。 残念ながらwikiを作って受け入れることはできないので、私が最も考えさせられた答えを1つ選びます。

どのように解決するのですか?

C++ではなくCを使用する2つの理由。

  1. 多くの組み込みプロセッサでは、C++ コンパイラがないか、そのために追加料金を支払わなければなりません。
  2. 私の経験では、組み込みソフトウェア エンジニアのかなりの割合が C++ の経験をほとんど、あるいはまったく持っていません (1)、あるいは電子工学の学位で教えない傾向があるため、彼らが知っていることに固執するほうがよいでしょう。

また、元の質問と多くのコメントでは、4Kb の RAM . 一般的な組み込みプロセッサでは、コードはフラッシュに保存され、そこから実行されるため、RAM の量はコードのサイズとは (ほとんど) 関係ありません。

確かに、コード ストレージ スペースの量は念頭に置くべきものですが、より容量の大きい新しいプロセッサーが市場に登場するにつれ、最もコストに敏感なプロジェクトを除いて、以前ほど問題にはならなくなってきています。

組み込みシステムで使用するための C++ のサブセットの使用について。 MISRA C++ 規格があり、これは一見の価値があるかもしれません。

EDITです。 参照 この質問 で、組み込みシステムのためのCとC++の比較について議論されました。