2020/09/30
個人開発では自分の PC のみで動作すれば良いのだが、OSS では複数の環境(OS,Compiler 等)で動作する必要がある。
その時に変更したコードをメモる。
環境
C++について書く
変更点に対する表記は git 風にと書くことにする
- 変更前
+ 変更後
boost
asio
io_context
古いboost::asioでは、
io_contextは存在しない(現在では推奨)。
なので、古い boost での動作が必要であれば、以下の変更を加える。
- boost::asio::io_context io_context_;
+ boost::asio::io_servier io_service_;
std
mutex
昔はstd::mutexがなかったようだ。
OSS がboostに依存していれば、boost::threadを使う。
(等値変換ではないかもしれません!)
+ #include <boost/thread.hpp>
- mutable std::mutex mtx_;
+ mutable boost::thread mtx_;
- std::lock_guard<std::mutex> lock (mtx_);
+ boost::mutex::scoped_lock lock (mtx_);
int, std::size_t
コンパイラオプションによっては、intとstd::size_tの比較ができない。
私の場合は for 文でエラーが発生した。継続条件にstd::size_tを使っているが、変数をintで宣言したためエラー発生した。
- for (int i=0; i<N; ++i) {
+ for (std::size_t i=0; i<N; ++i) {
override specifier
コンパイラのバージョン・オプションによっては、override specifierを省略してはいけないようだ。
私の場合はMacOSでのビルドが通らなかった。
- void func ();
+ void func () override;