VC++ + SQL Server で作っていたクラス群を Linux + Postgres へ移植。Turbo Linux 4.0 の gcc とかなり違っていて大変だが,今回修正が必要だった部分を書いておく。以下,gcc と書いたら Turbo Linux 4.0 付属のものとする(多分現時点で最新だと思う)。
- VC では ios_base があるが,gcc では古い ios しかない。
- ソースファイルは EUC にしないと変なエラーが出ることがある。
- stringstream がない。代わりに古い(?)strstream がある。ちなみに istrstream のコンストラクタは string ではなく char * をとる。
- basic_string::compare(size_type, size_type, const string &) がない。これは const string & が最初の引数になっていた。
- VC では <cxxx> が std 名前空間になっていないが,gcc ではちゃんと std 名前空間になっている。
- stream の ! 演算子がない(* もかな?)。good() などで代用。
- VC の stricmp は gcc では strcasecmp になっている。
- VC の itoa がない(と思う)。
- <iostream> がなく,<iostream.h>。
全体的には,コンパイラは gcc の方が標準に準拠しているが,標準 C++ ライブラリ,STL は VC++ の方が新しいという感じ。てことは STL だけ Linux でコンパイルすれば最高の環境になるのか,な。どうだろ。