アプリ版:「スタンプのみでお礼する」機能のリリースについて

私は現在Cygwinを用いて、Windows上でC言語を使っています。
複素数型を使いたくていろいろ調べたところ、Cの新規格C99では複素数型が使えることが分かりました。
そこでお聞きしたいのですが、どうすればC99を使えるようになるのでしょうか?
それとも、CygwinではC99を使うことはできないのでしょうか?
あるいはお金を払って、どこかから買えばよいのでしょうか?
よろしくお願いします。

A 回答 (3件)

MinGWとしてコンパイルしてもよいのであれば、-mno-cygwinオプションを付ければ、<complex>が使えるようになります。



-mno-cygwinオプション無しでも、double _Complex型などは使えますが、対応するライブラリがありません。また、Iマクロも_Complex_Iマクロも定義されていないので、自分で用意する必要があります。また、creal関数やcimag関数も自作が必要です。その部分だけ何とかすれば、四則演算程度であれば十分でしょう。
ちなみに、GCCはC99に対応する前から複素数型をサポートしています。

参考URL:http://www.sra.co.jp/wingnut/gcc/gcc-j.html#Comp …
    • good
    • 0
この回答へのお礼

ありがとうございます。
MinGWとしてコンパイルして、うまく使うことが出来ました。
関数の自作やライブラリについては、何とかして用意してみたいと思います。

お礼日時:2006/12/22 22:55

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/inc …
http://sources.redhat.com/cgi-bin/cvsweb.cgi/lib …

3) インターネットを検索すると複素数計算用のライブラリが公開されていたりするのでそれを使う

といった選択肢から選ぶことになると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
教えて頂いたサイトからライブラリのソースを手に入れて設定してみました。とりあえず簡単な複素数値を扱うことは可能になりました。
引き続き試してみたいと思います。

お礼日時:2006/12/22 22:39

複素数型が使いたいがため"だけ"なら、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());
}
    • good
    • 0
この回答へのお礼

ありがとうございます。
目的は、複素数が使いたいだけでした。
C++は全く知らなかったのですが、複素数が扱えるということですので、勉強してみたいと思います。

お礼日時:2006/12/22 22:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!