いままではCしか使っていないので、C++は使ったことがなかった。
makefileをちょっと書き換えて、CPPもビルドできるようにした。gcc c++のオプションはgccのそれをそのまま使ったので、c++では使えないぞ、という警告がいくつか出てる。
ヘッダファイルとか作るのが面倒だったので、externとかべた書きしてる。明らかにルール違反。
とりあえず、C++といえばクラスだろ、ということで、試しに書いてみた。
#includeextern "C" void test_func(void); class Hoge_class { public: void set_value(int value) { val = value; } void print_value(void) { printf("value:%d\n", val); } protected: private: int val; }; void test_func(void) { printf("test_func\n"); Hoge_class cls1, cls2; cls1.set_value(123); cls2.set_value(456); cls1.print_value(); cls2.print_value(); }
extern void test_func(void); test_func();
結果としては、ちゃんと予想通りに表示される。
ということで、簡単ながらマイコンでもC++が動くのは確認できた。
もっとも、STM32Cubeが吐くコードはCコードだから、これを全部C++に移植するのは無理ゲー。おそらくF-35だって全部が全部C++じゃないだろうから、このあたりは妥協することにする。
***
JSF++の4.2.1 "Should, Will, and Shall Rules"がいまいちよくわからなかったので、英語が得意そうな知り合いに聞いてきた。会うの何年ぶりだろうか。積もる話もいろいろ。頭の中も似たような感じなので、ちょっと話題を出せばあっという間に膨らんで、いろいろ話せて楽しかった。ウチの周りじゃこういう話できる人は皆無なので、話して楽しい人と話す機会ってのはかなり貴重。
閑話休題。
JSF++ではルールに関してShould, Will, Shallの3段階があるけど、曰く、Shouldは提案、Willはもっと強い感じ、Shallは強制的、という感じらしい。
もっとも、JSF++ではShould, Will, Shallにかかわらず、ルールを無視するには手順を踏む必要がある。
「「shall we dance?」というのは、聞いている感じだけど、shallでほとんど強制」みたいな例えが普通に出てくる。知識ある人ってすげーな、と。
大昔にmbedを使ってた頃はC++を少し触った気がするけど、もうすっかり忘れてる。C++でパフォーマンスがどれくらい変化するのかはわからないけど、キチキチまで最適化する必用があるようなコードが必要になる機会はめったにないので、とりあえずC++で遊んで見る予定。
0 件のコメント:
コメントを投稿