Actions
UsingCplusplus¶
- Table of contents
- 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 を指定しました。
累計表示回数:149
Updated by mole lord 6 months ago · 2 revisions