OSごとに#ifdef を書く必要は本当にあるのか
C/C++言語で#ifdefを書くのは、OSなどの移植性に限るべきだと前に述べた。
しかし、ある程度以上のリッチな環境だったら#ifdefを使う必要性はないのではと思うようになった。実際RaspberryPiでも使われているPython言語には、windows, Linux, MacOSでも同じように動く。RaspberryPiでも動くようなら、ある程度リッチな環境ならばOS移植性を気にしなくてすむようなライブラリを使えばよいのではないかと思います。
そのようなライブラリの1つはBoostであるようです。
#ifdefが使いたくなる状況の1つは、ファイル操作です。
ディレクトリを作る、ただそれだけの操作がwindowsとLinuxで異なるために、「とりあえず、ディレクトリは予め作ってあることにしよう」などという状況のプログラムは珍しくありません。
Boostのファイル操作のライブラリを使うことは、Pythonのos.pathモジュールを使うのと同じような利便性が得られます。自分のメンテナンスするコードから、#ifdefをなくすことができます。
もし、ディスクスペースの関係で、Boostをインストールすることができない場合には、Boostで確かめられている外部仕様にあわせた最小限の互換ライブラリを書けばいいのです。(その部分にだけ#ifdef #endifは残りますが。)
ファイル/ディレクトリ操作
http://boostjp.github.io/tips/filesystem.html#remove-file
Boost のインストール方法の解説です。
http://www.kmonos.net/alang/boost/install.html
boostjp : Boost日本語情報サイト
http://boostjp.github.io/howtobuild.html
追記:
boost::filesystemをReleaseモードで使う場合に必要になるファイルの大きさは次のとおりでした(使用OS:Windows Vista)。
Boostのライブラリのうち、どの範囲でだけ使うということを決めておけば、
システムのリソースの制限があるプロジェクトでも、許容できる範囲である方が大多数ではないかと推測いたします。
yyyy/mm/dd hh:mm 907,786 libboost_filesystem-vc120-mt-1_58.lib
Author And Source
この問題について(OSごとに#ifdef を書く必要は本当にあるのか), 我々は、より多くの情報をここで見つけました https://qiita.com/nonbiri15/items/55ee7a18d8e4c69c3a82著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .