Cygwinのgccで-std=c99オプションを付けて
以下のコードをコンパイルしようとしています。
#include <stdlib.h>
#include <math.h>
int main() {
isnormal(0.123);
strtold("0.123", NULL);
return 0 ;
}
$> gcc -std=c99 test_strtold.c
ですが、コンパイルできず、2つの関数とも'undefined reference'になります。
-std=c99を付けてコンパイルする方法または
この記述と同等の別の記述がありましたらご教授願います。
よろしくお願いいたします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#2です。
先ほどは、-std=gnu99 -mno-cygwinと書きましたが、-std=c99 -mno-cygwinでもコンパイルできます。
ただし、別の問題が発生する可能性大です。
というのは、-mno-cygwinを指定するとMinGWとしてコンパイルすることになるのですが、このprintf系関数(scanf系も)でlong double型を使うことができません。
厳密なエラーチェックができなくなりますが、strtoldの代わりにsscanfを使えば、-mno-cygwinなしでもコンパイルできますので、総合的に考えるとその方がよいかもしれません。
回答ありがとうございます。
std=c99でstrtoldの代わりにsscanfを使うことにします。
isnormalは、何かほかの方法を探してみることにします。
No.3
- 回答日時:
によると、strtold()についてはCygwinはmissing、つまり「未対応」ってことのようです。
isnormal()の方も、おそらく「C99に対応しているisnormal()」がないのではないでしょうか?
回答ありがとうございます。
では、残念ですが、違う記述もしくは、
-std=gnu99 -mno-cygwin
で対応しようと思います。
No.2
- 回答日時:
CygwinのライブラリはC99に完全対応しているわけではありません。
-std=c99の代わりに-std=gnu99 -mno-cygwinを指定すればおそらく解決すると思います。
No.1
- 回答日時:
この回答への補足
-std=c99を付けなければ、
$> gcc test_strtold.c
エラーは
undefined reference to `_strtold'
のみです。
-std=c99を付ければ、
undefined reference to `_isnormal'
undefined reference to `_strtold'
とふたつともです。
また、-lmをつけても結果は同じです。
ちなみに、
Red Hat Enterprise Linux ES release 4 の gcc v3.4.6 では、
$> gcc -std=c99 test_strtold.c
でコンパイルは通り、
Ubuntu 7.10 の gcc v4.1.3 では、
gcc -std=c99 -lm test_strtold.c
でコンパイルは通りました。
cygwinでのgccのバージョンは、3.4.4です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- C言語・C++・C# スタックフレームの消滅 6 2023/05/20 12:33
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# C言語のマクローリン展開ローラン展開のコードについて 3 2022/12/15 14:45
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
C言語をコンパイルするとコンピ...
-
実行後にコンパイルに失敗しま...
-
ヘッダーファイル『windows.h』...
-
math.hに含まれる関数が使えない
-
[COBOL] ソースの復帰
-
MVSマシンで0C7でABENDしたので...
-
printf()関数の括弧を二重にし...
-
「逆コンパイル」ってできるん...
-
同じEXE・同じファイルで解析結...
-
<math.h>ヘッダを入力している...
-
ビープ音が鳴りません・・・
-
Cのソースを毎回コンパイルし...
-
lhafileをインストールしたい
-
自作DLLの中身を暗号化
-
Verilog_HDLでのdefineとifdef
-
#defineとconstについて
-
C#で char型とstring型の比較で...
-
gccでc++プログラムをコンパイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
共有ライブラリの内容確認について
-
シリアル通信の受信待ちについて
-
C#で char型とstring型の比較で...
-
64ビットのlinuxで32ビットメモ...
-
Verilog_HDLでのdefineとifdef
-
math.hに含まれる関数が使えない
-
自作DLLの中身を暗号化
-
C言語で作ったらWindowsでもMac...
-
実行後にコンパイルに失敗しま...
-
lhafileをインストールしたい
-
c言語です コンパイルした時に...
-
ビープ音が鳴りません・・・
-
すべてのリビルド: 0 正常、 0 ...
-
gcc バージョン違いによるコン...
-
Cのコンパイルでコメントアウト...
-
CLRアプリと通常のアプリとの違い
-
「インクルードファイル 'pthre...
-
MVSマシンで0C7でABENDしたので...
おすすめ情報