回答受付が終了しました

趣味でマイコンプログラミングをしているものです。esp32使ってます。 質問は内容は、 C++で開発する際は、 全ての文字列をstd::stringで定義した方がいいのかというものです。

回答(2件)

1

> 全て書こうと思えば書ける まぁ、それがチューリング完全ってやつでしょう。 > C言語の方が早いイメージ いまどきは、測られる時間は「実行時間」だけじゃなくて開発に必要な時間、ということもあったりして。 プロの仕事としては「少しでも速いのが正義」ではなくて、「達成したい仕事を十分に満たす速さ」を得たらそれ以上を目指すために時間を使うのは悪とされます。 この辺はメモリ使用量も同様で、「メモリ消費が大きい」としてもそれでちゃんと収まるならそれでOK。 だから、「遅くても、メモリを喰っても使える道具は使えばいい」というのが一つです。 (もちろん、ライブラリとかフレームワーク的なものを考えるなら、最終成果物をイメージして評価しなきゃいけないけれど) あと、道具として信用できるか、というのももう一つ。ちょっと前まで組み込みでC++ってのはキワモノでした。リソースが厳しかったというのもあるけれど、コンパイラ/開発環境がプアで信頼できなかった、というのがもう一つ。CとC++では処理系の複雑さが段違いです。複雑になれば当然バグも紛れ込みやすくなるでしょう。その危険をどれだけ見込むか... いずれにせよ、(CとC++のインターフェース部分は仕方ないとして)グループ内で方針は統一して混在させるな、ということだけはどの状況でも言えるかと思います。

1人がナイス!しています

0

とりあえずの動けば良い当座の動作確認であれば、書きやすいものを使えば良いと思われます。 しかし、最終的に、起動後、長時間、例えば数年間とか、ノーメンテナンスで確実に動き続けなくてはならないような応用では、ヒープメモリが汚染されて、不足し、動作停止ということが往々にしてあるので、メモリ管理の点から固定位置のメモリに文字列を保存するような特別な処理が必要になります。 毎日リセットできるなら、そう言う問題は軽減されます。 つまり、使用環境、求められる信頼性などで何を使用するかは変わります。 CであるかC++であるかとは別の問題です。