C文法総括基礎文法と大型プログラムの作成
7701 ワード
ソースファイルとヘッダファイル
ソースファイルの拡張子は.c最後に、各ソースファイルには関数と変数定義が含まれ、そのうちの1つのソースファイルにはmain()関数が含まれます.
複数のソースファイルはいくつかの変数と関数を共有することができ、#include命令によって含まれる.この含まれるファイルはヘッダファイルであり、拡張子は.h
// c
#include < >
//
// , ,
//
#include " "
//#include , ,
//
#if defined (IA32)
#define CPU_FILE "ia32.h"
#elif defined (IA64)
#define CPU_FILE "ia64.h"
#elif defined (AMD64)
#define CPU_FILE "amd64.h"
#endif
#include CPU_FILE
//
// file1.h file3.h
//file2.h file3.h
//prog.c file1.h file2.h
// 。 ,
// , ,
// , #ifndef #endif
#ifndef BOOLEAN_H
#define BOOLEAN_H
#define TRUE 1
#define FALSE 0
typedef int Bool;
#endif
// BOOLAN_H #ifnedf #endif 。 , #ifnedf #endif
//#error , ,
// C89 ,
// , #ifdef __STDC__
#ifnedf __STDC__
#error This header requires a Standard C compiler
#endif
ヘッダファイルは関数プロトタイプを共有できます
他のファイルで定義された関数funが呼び出されると.コンパイラが呼び出しの間に関数のプロトタイプを常に確認するには、コンパイラがない場合はデフォルトのintタイプを返し、パラメータ数と関数fun呼び出しの実際のパラメータが一致すると仮定します.
共有変数宣言
ヘッダファイルは、#includeコマンド、すなわち他のヘッダファイルを含むこともできる
マルチファイルプログラムの構築
1.コンパイルするには、プログラム内のソースファイルごとにコンパイルする必要があります(ヘッダファイルをコンパイルする必要はありません.ヘッダファイルを含むソースファイルをコンパイルすると自動的にコンパイルされます
ヘッダファイルの内容).各ソースファイルについて、コンパイラはターゲットコードを含むファイルを生成します.これらのファイルは
ターゲットファイル、unixシステムでの拡張子は.o,windowsシステムにおける拡張子は.ojb
2.リンク、コネクタは、前のステップで生成したターゲットファイルとライブラリ関数のコードを組み合わせて実行可能なプログラムを生成します.コネクタの役割
は、コンパイラが残した外部参照の問題(外部参照が1つのファイルで発生した関数が別のファイルで定義されたものを呼び出す)を解決するためです.
関数または別のファイルで定義された変数にアクセスする場合)
makefile
justify: justify.o word.o line.o
gcc -o justify justify.o word.o line.o
justify.o: justify.c word.h line.h
gcc -c justify.c
word.o: word.c word.h
gcc -c word.c
line.o: line.c line.h
gcc - c line.c
各グループはルールとなり、各ルールの最初の行にはターゲットファイルが与えられ、後で依存するファイルが与えられます.
2行目は実行するコマンドです(ターゲットファイルに依存するファイルが変更された場合、ターゲットファイルを再構築する必要があります.この場合、2行目のコマンドを実行します)
make:
make
make justify
makt install
make ,
コンパイル中のエラー
1.スペルミス.変数名または関数名のスペルミスが発生した場合、コネクタは欠落レポートを作成します.列は、プログラムで定義された関数です.
read_char、しかし呼び出す時それをread_と書きますCahr、リンクはread_が欠けていると報告します.char関数
2.コネクタにファイルfooが見つからない場合、ファイルが欠落する.cの関数は、このファイルを知らない可能性があります.このときmakefileをチェックします
あるいはfooを確保するために工事書類がある.cファイルはリストされています.
3.ライブラリが欠落すると、リンクはプログラムで使用するすべてのライブラリ関数を見つけることができず、unixシステムの1つが