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;