Linux C 多檔案程式設計

2021-08-08 09:36:23 字數 1630 閱讀 3811

學了很久的c語言,很多程式還是只有乙個main.c,而不懂得如何多檔案程式設計。

常見的程式由多個原始檔組成,通常還有一些標頭檔案。原始檔包含函式的定義和外部變數,而標頭檔案包含可以在原始檔之間共享的資訊。

事實上,可以將程式分割成任意數量的原始檔。根據慣例,原始檔的副檔名必須為.c,其中乙個原始檔必須是main.c,作為程式的

起點。分割函式時,把相關的函式和變數分組放到同乙個檔案中。

#include 使得在任意數量的原始檔中

共享乙個巨集定義或型別定義成為可能。它會

通知預處理器開啟指定的檔案,並且把它插入到當前檔案中。

#include //c語言自身庫頭問價

#include 「file.h」  //所有的其他標頭檔案和自己編寫的標頭檔案

兩者區別在於後者會先搜尋當前目錄,然後搜尋系統標頭檔案所在目錄。

所以不能把自己定義的標頭檔案用尖括號括起來,這樣編譯器會直接搜尋系統檔案所在目錄,顯然是找不到標頭檔案的。

#include 「/myfiles/file.h」   //可以幫助定位標頭檔案

通常最好的做法是不要在#include 指令中包含路徑或者驅動器的資訊。

不然當需要移植到其他電腦甚至是其他系統時,編譯會變得很困難。

#include

#include

void func1();     //函式宣告  

void func2();     //函式宣告  

void func3();     //函式宣告  

int main()  

//函式實現  

void func1()   

void func2()  

void func3()  

可以寫成乙個main.c / stack.c / stack.h

stack.c

#include 「stack.h」

void func1()

void func2()

void func3()

stack.h

void func1();

void func2();

void func3();

main.c

#include

#include

#include 「stack.h」

int main(int argc, char *argv)

其中,stack.h還可以寫成另一種形式

#ifndef stack_h          //使用 #ifndef / #endif 來

封閉檔案的內容,這樣可以

保護標頭檔案stack.h

#define stack_h

void func1();

void func2();

void func3();

#endif stack_h     

Linux C 之檔案程式設計(3)

讀寫檔案通常是大量的資料 這種大量是相對於底層驅動的系統呼叫所實現的資料操作單位而言 這時,使用庫函式就可以大大減少系統呼叫的次數。這一結果又緣於緩衝區技術。在使用者空間和核心空間,對檔案操作都使用了緩衝區,例如用fwrite寫檔案,都是先將內容寫到使用者空間緩衝區,當使用者空間緩衝區滿或者寫操作結...

linux c程式設計 檔案的讀寫

linux 系統中提供了系統呼叫函式open 和close 用於開啟和關閉乙個存在的檔案 int open const char pathname,int flags int open const char pathname,int flags,mode t mode int open const ...

Linux C程式設計 檔案屬性

寫在前面的話,本文介紹linux系統下ls命令列出的檔案 目錄屬性 第1欄位 檔案屬性字段 檔案屬性字段總共有10個字母組成,第乙個字元代表檔案的型別 表示該檔案是乙個普通檔案。d 表示該檔案是乙個目錄,字母 d 是dirtectory 目錄 的縮寫。l 表示該檔案是乙個鏈結檔案。字母 l 是lin...