- 締切済み
C99の導入方法を教えてください。
私は現在Cygwinを用いて、Windows上でC言語を使っています。 複素数型を使いたくていろいろ調べたところ、Cの新規格C99では複素数型が使えることが分かりました。 そこでお聞きしたいのですが、どうすればC99を使えるようになるのでしょうか? それとも、CygwinではC99を使うことはできないのでしょうか? あるいはお金を払って、どこかから買えばよいのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- jacta
- ベストアンサー率26% (845/3158)
MinGWとしてコンパイルしてもよいのであれば、-mno-cygwinオプションを付ければ、<complex>が使えるようになります。 -mno-cygwinオプション無しでも、double _Complex型などは使えますが、対応するライブラリがありません。また、Iマクロも_Complex_Iマクロも定義されていないので、自分で用意する必要があります。また、creal関数やcimag関数も自作が必要です。その部分だけ何とかすれば、四則演算程度であれば十分でしょう。 ちなみに、GCCはC99に対応する前から複素数型をサポートしています。
- sakusaker7
- ベストアンサー率62% (800/1280)
cygwin のgcc (3.4.x)でもオプション指定によってC99対応コンパイラとして使うことはできます。 しかし、ライブラリが対応していないので素のままのcygwinでは複素数を使うことはできません。 GNU/Linux上のgccならば使用しているライブラリ(glibc)が複素数に対応したものになっているので、 1) VMwareやVirtual PC等の仮想化ソフトを導入し、その上にGNU/Linuxをインストールしてその環境でビルドする 2) glibcやFreeBSDのライブラリはソースが公開されているので、自分で必要部分をポートする http://www.jp.freebsd.org/cgi/cvsweb.cgi/src/include/libc/include/ http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/include/?cvsroot=glibc 3) インターネットを検索すると複素数計算用のライブラリが公開されていたりするのでそれを使う といった選択肢から選ぶことになると思います。
お礼
ありがとうございます。 教えて頂いたサイトからライブラリのソースを手に入れて設定してみました。とりあえず簡単な複素数値を扱うことは可能になりました。 引き続き試してみたいと思います。
- episteme_at_goo
- ベストアンサー率25% (9/36)
複素数型が使いたいがため"だけ"なら、C++コンパイラを(Cコンパイラとして)使うという選択もあるやもしれません。 --- complex_test.cpp --- #include <cstdio> #include <complex> using namespace std; int main() { complex<double> x(1,2); complex<double> y(3,4); complex<double> z = x * y; printf("z=(%f,%f)\n", z.real(), z.imag()); }
お礼
ありがとうございます。 目的は、複素数が使いたいだけでした。 C++は全く知らなかったのですが、複素数が扱えるということですので、勉強してみたいと思います。
お礼
ありがとうございます。 MinGWとしてコンパイルして、うまく使うことが出来ました。 関数の自作やライブラリについては、何とかして用意してみたいと思います。