Project

General

Profile

Actions

UsingCplusplus

Cで似非C++クラスを作るのが嫌になって、どうせならExceptionのthrowを扱えるビルド環境を作りたいと思い立ちました。
ROM消費量が増えるのでSTM32F0系やL0系には適しませんが、JSONパーサやBoostが使えるようになるかも(まだ試してません)。

細かい変更点は ソース差分 を見ていただくとして、ここでは大雑把な変更点を述べます。

Makefile

CubeMXが自動生成するMakefileでは -specs=nano.specs をリンク時に指定しているためthrowはできてもcatchができないようです。
参考 Failed to catch c++ exceptions @ OpenSTM32 Community
-specs=nosys.specs に書き換えることで、catchできるようになります。

LDFLAGSに -fexceptions の追加が必要です。
あと、リンク時に呼び出すコマンドを gcc から g++ に変える必要があります。

new と delete の置き換え

newとdeleteからFreeRTOSのヒープ管理関数を呼び出させるために、 common/molelord/MoleCpp.cpp を追加しました。

その他注意点

g++のオプションに gnu++17 を指定した場合、STMicroのヘッダで register を使用している箇所があってコンパイルエラーになります。
そのため、 gnu++14 を指定しました。


累計表示回数:43

Updated by mole lord about 1 month ago · 2 revisions