1999/12/28 - Linux C

VC++ + SQL Server で作っていたクラス群を Linux + Postgres へ移植。Turbo Linux 4.0 の gcc とかなり違っていて大変だが,今回修正が必要だった部分を書いておく。以下,gcc と書いたら Turbo Linux 4.0 付属のものとする(多分現時点で最新だと思う)。

  1. VC では ios_base があるが,gcc では古い ios しかない。
  2. ソースファイルは EUC にしないと変なエラーが出ることがある。
  3. stringstream がない。代わりに古い(?)strstream がある。ちなみに istrstream のコンストラクタは string ではなく char * をとる。
  4. basic_string::compare(size_type, size_type, const string &) がない。これは const string & が最初の引数になっていた。
  5. VC では <cxxx> が std 名前空間になっていないが,gcc ではちゃんと std 名前空間になっている。
  6. stream の ! 演算子がない(* もかな?)。good() などで代用。
  7. VC の stricmp は gcc では strcasecmp になっている。
  8. VC の itoa がない(と思う)。
  9. <iostream> がなく,<iostream.h>。

全体的には,コンパイラは gcc の方が標準に準拠しているが,標準 C++ ライブラリ,STL は VC++ の方が新しいという感じ。てことは STL だけ Linux でコンパイルすれば最高の環境になるのか,な。どうだろ。

コメントする