C言語のリンクセクションと定義セクションとは?プリプロセッサ指令の基本を解説
リンクセクションと定義セクションとは
C言語のソースコード冒頭に記述されるリンクセクションと定義セクションは、あわせて「プリプロセッサ指令」と呼ばれます。これらは、システムライブラリ内の関数をプログラムに結び付ける(リンクする)よう、コンパイラに対して事前に指示を出す重要な役割を担っています。
たとえば、リンクセクションでは使用するヘッダーファイルを指定し、定義セクションではシンボル定数(記号定数)を定義します。
#include<stdio.h>
また、定義セクションでは次のように定数を宣言できます。
#define PI 3.1415
プリプロセッサ指令の基本ルール
- プリプロセッサ指令は必ず「#」記号で始めます。
- #include は、システムライブラリ(ヘッダーファイル)を読み込みます。
- #define は、マクロや定数を定義します。
リンク定義がないと、コンパイラによってはプログラムが正しく実行されません。リンクセクションがあることで、コンパイラはシステムライブラリに用意された事前定義済みの関数を適切にリンクできるようになります。
stdio.h の主な標準ライブラリ関数一覧
ヘッダーファイル「stdio.h」には、標準入出力やファイル操作に関わる多くの関数が定義されています。主なものは以下の通りです。
| 関数名 | 説明 |
|---|---|
| printf() | 画面に文字、文字列、浮動小数点数、整数、8進数などを表示します。 |
| scanf() | キーボードから文字、文字列、数値データを読み込みます。 |
| getc() | ファイルから1文字読み込みます。 |
| gets() | キーボードから1行読み込みます。 |
| getchar() | キーボードから1文字読み込みます。 |
| puts() | 出力画面に1行書き込みます。 |
| putchar() | 画面に1文字書き込みます。 |
| clearerr() | エラー指示子(エラーフラグ)をクリアします。 |
| fopen() | ファイルを開きます。(ファイル操作系の関数はすべて stdio.h で定義されています。) |
| fclose() | 開いたファイルを閉じます。 |
| getw() | ファイルから整数を読み込みます。 |
| putw() | ファイルに整数を書き込みます。 |
| fgetc() | ファイルから1文字読み込みます。 |
| putc()/fputc() | ファイルに1文字書き込みます。 |
| fgets() | ファイルから文字列を読み込みます。 |
| fputs() | ファイルに文字列を書き込みます。 |
| feof() | ファイルの終端(EOF)かどうかを判定します。 |
| fgetchar() | キーボードから1文字読み込みます。 |
| fprintf() | 書式付きデータをファイルに書き込みます。 |
| fscanf() | ファイルから書式付きデータを読み込みます。 |
| sprintf() | 書式付き出力を文字列に書き込みます。 |
| sscanf() | 文字列から書式付き入力を読み込みます。 |
| remove() | ファイルを削除します。 |
| fflush() | ファイルのバッファを強制的に書き出します。 |
サンプルプログラム:円の円周を求める
以下は、リンクセクションと定義セクションを活用して円の円周を計算するCプログラムです。
#include <stdio.h> // リンクセクション
#define PI 3.1415 // 定義セクション
main(){
float c, r;
printf("Enter radius of circle r=");
scanf("%f",&r);
c = 2*PI*r;
printf("Circumference of circle c=%f", c);
}
このプログラムでは、#include で標準入出力ライブラリを読み込み、#define で円周率 PI を定義しています。ユーザーが半径を入力すると、「2 × π × 半径」という公式に基づいて円周が計算され、結果が表示されます。
実行結果
実行すると、次のように出力されます。
Enter radius of circle r=6 Circumference of circle c=37.698002
-
C言語の文字操作を徹底解説!宣言方法と入出力関数の使い方
Cプログラミング言語において、文字(character)は英大文字(A〜Z)、英小文字(a〜z)、数字(0〜9)、空白(ホワイトスペース)、または特殊記号のいずれかとして扱われます。文字の宣言方法C言語で文字型変数を宣言する際は、char 型を使用します。文字定数はシングルクォーテーション( )で囲んで指定します。char a = A; /* 文字定数を使用した宣言 */このように宣言することで、変数 a に1文字分のデータを格納できます。文字入出力関数の種類C言語には、文字を入出力するための関数がいくつか用意されています。代表的なものは以下の3組です。scanf / printf: 書式指定
-
C言語入門:モノリシックプログラミングとモジュラープログラミングの違いを徹底解説
本記事では、C言語におけるモノリシックプログラミングとモジュラープログラミングの違いを、それぞれのメリット・デメリットとともに詳しく解説します。 モノリシックプログラミングとは プログラム全体を1つの関数、すなわちmain関数だけですべて記述する方式を「モノリシック(一枚岩)型プログラミング」と呼びます。しかし、すべてのロジックを単一の関数に詰め込むのは、良いプログラミングスタイルとは言えません。 デメリット モノリシックプログラミングには、以下のような欠点があります。 プログラムが非常に大きく、複雑になりやすい。 デバッグ、テスト、保守が非常に困難になる。 モジュラープログラミングとは