• 検索結果がありません。

第 7 章 言語処理系 ( コンパイラ ) 149

7.2 C コンパイラ

test.c

³

1 #include<stdio.h>

2

3 int main()

4 {

5 printf("Hello, C world!\n");

6 return 0;

7 }

µ ´

利用しているターミナルによっては,ソースコードにあらわれるバックスラッシュ(\ が,¥になる場合もありますが,どちらも同じ意味です.

このソースファイルをコンパイルするためには,gccというコマンドを使ってコンパイ ルを行います.gccとは,GNU Compiler Collectiongcc)を実行するためのコマンドで す.gccはFree Software Foundationという組織がオープンソースで提供しているコンパ イラで,様々なコンピュータ上で動作します.gccを使ってコンパイルをするために,以 下のようにtest.cが入っているディレクトリでコマンドを実行してください.

実行例 ³

$ gcc test.c

µ ´

コンパイルを実行すると,a.outという名前の実行ファイルが生成されます.生成され た実行ファイルを実行するには,以下のようにします.

実行例 ³

$ ./a.out

Hello, C world!

µ ´

実行すると,”Hello, C world!”という文字列がターミナルに表示されます.

gccコマンドでオプションを指定せずにコンパイルを行うと,前述のようにa.outとい う名前の実行ファイルが出力されます.これを任意の名前に変えるためには,gcc”-o”

オプションを使用します.例えば,helloという実行ファイルを出力したい場合,以下の ようにします.

実行例 ³

$ gcc -o hello test.c

µ ´

7.2.2 ヘッダファイル,ライブラリ

先ほどのプログラムでは,プログラム内で文字列を出力するためにprintf関数が使わ れています.この関数を用いるために,printf関数が宣言されているstdio.hという名前

のファイルをインクルードしています.このようなファイルをヘッダファイル(Header File)と言います.

また,関数の宣言に対応する関数の実体は,ライブラリファイル(Library File)と呼 ばれるファイルの中に存在します.ライブラリファイルは,コンパイル時に結合する必要 があり,このことをリンク(Link)すると言います.標準的なライブラリファイルは自動 的にコンパイル時にリンクされますが,そうではないライブラリは明示的に指定する必要 があります.これについては,7.4.4節で詳しく説明をします.

どの関数がどのインクルードファイルに宣言されているかを調べるためには,manコマ ンドを使ってマニュアルで調べます.調べるときには,シェルから”man (関数名)”と実行 します.また,このマニュアルの中では,関数の使い方や関数の引数,オプション,注意 などが載っていますので,関数を使うときにはこのマニュアルを見るようにしましょう.

例えば,sqrt関数のmanを開くと,マニュアルに以下のように載っています.書式の 部分では,関数の戻り値,引数などが書いてあります.説明の部分では,この関数の使い 方などが書いてあります.バグの部分では,関数を使う際の注意が書いてあるので,注意 が必要です.

sqrt関数のman

³

SQRT(3) BSD Library Functions Manual SQRT(3)

NAME

sqrt -- square root function SYNOPSIS

#include <math.h>

double

sqrt(double x);

long double

sqrtl(long double x);

float

sqrtf(float x);

DESCRIPTION

The sqrt() function compute the non-negative square root of x.

SPECIAL VALUES

sqrt(-0) returns -0.

sqrt(x) returns a NaN and generates a domain error for x < 0.

SEE ALSO math(3) STANDARDS

The sqrt() function conforms to ISO/IEC 9899:1999(E).

BSD December 11, 2006 BSD

µ ´

参考文献

man gcc

B.W.カーニハン/D.M.リッチー著 石田晴久訳

「プログラミング言語C(第2版)ANSI規格準拠」(共立出版)