質問: 今,C++で書かれたソースをJavaに変換しようとしているのですが, マクロを展開し,書き換えるのに困っています. 特に,#define , #ifdef/#ifndef の展開に困っています どなたかこの変換のやりかたを教えていただけないでしょうか...
回答: Cでのマクロをjavaのコードで100%置き換えるのは、おそらくムリです。 それで、 1.マクロ展開済みのソースをjavaに変換する。 というのが第一案。 GCC の場合 `-E -P` のようなオプション。 Visual C++の場合、 `/EP` のようなオプション を使用することで展開済みのソースが得られます。 例: `g++ test.cpp -E -P -o test.cp` 2.Cのプリプロセッサをマクロを含んだjavaソースに適用する。 というのが第2案。 プリプロセッサの部分が独立したプログラムになっている場合、 (GCCの場合は`cpp` がプリプロセッサプログラムです) ソースコードをプリプロセッサプログラムにかましてやります。 例: `cpp test.java -o C2Java.java` 拡張子を仮に変更してやれば `g++ test.java.c -E -P -o Test.java` のようなことでも可能だと思います。 この場合にはやはりjavaコードへの100%の適用はできないかもしれないです。