0

Turbo C で作業する場合、デフォルトですべての関数とヘッダー ファイルを取得します。これらは通常 #inlcude でインクルードできます。例: stdlib.h、math.h

しかし、そのようなヘッダー ファイルを使用して単純なプログラムを作成すると、これらのファイルをインクルードできないため、エラーが発生します。これらのヘッダー ファイルは、デフォルトで使用できるようになっていませんか? はいの場合、そのようなヘッダーファイルを使用する方法は? 「math.h」で関数 sqrt を使用すると、math.h が含まれていないためエラーが発生したため、次のコマンドに含める必要がありました。

cc -c aaa.c -I/usr/local/ssl/include
gcc -o aaa aaa.c -I/usr/local/ssl/include -L/usr/local/ssl/lib -lcrypto -lm
./aaa

このコマンドでは、2 番目のコマンドの最後に-lmがあり、math.h が含まれています。

再び同様に、UNIX Solaris サーバーで実行しているstdlib.hにある関数 itoa() を使用しましたが、含まれておらず、エラーが発生しています。このヘッダーファイルを追加する方法がわかりません。

4

3 に答える 3

3

ヘッダーはmath.h正常に含まれます。コードはコンパイルできます。ただし、指定しない限り、コンパイラはリンク先のコンパイル済みバイナリ (math.h の実装) を検出しません。したがって、コマンドで -lm を指定する必要があります。

itoa()は の標準機能ではstdlib.hないため、使用しないでください。代わりに sprintf を使用できます。

于 2012-05-23T07:51:07.723 に答える
0

デフォルトでは、これらは libc からエクスポートされる標準ライブラリ関数であり、任意の Unix/Linux フレーバーで利用できるはずです。次のようなコマンドを使用して、ヘッダーファイルが存在する場所を確認できます

find / -name "stdio.h" 2>/dev/null

また、必ず -l libc を使用して libc にリンクしてください。

また、どのコンパイラを使用していますか? gcc を使用することをお勧めします。これにより、インクルード構成がコンパイラ用に既に行われているため、そのまま使用して作業を開始できます。

于 2012-05-23T07:54:00.407 に答える
0

コンパイラは、インクルード ディレクトリ、ライブラリ ディレクトリなどを指定できるコマンド ライン設定を提供する必要があります。コンパイラのドキュメントを参照することをお勧めします。

たとえば、ビジュアル スタジオには、インクルード フォルダーを指定するためのコマンド スイッチ -I があります。

代替。場合によっては、set INCLUDE=... のように環境変数として指定できます。

それはすべて、使用するコンパイラによって異なります。

于 2012-05-23T07:48:21.400 に答える