幾個基本知識:
1、標頭檔案:標頭檔案的作用在於編譯時,會在#include<*.h>位置處展開,所以如果有多個.c檔案include同乙個標頭檔案(很常見),如果標頭檔案編寫時不進行處理,出現重複定義是不可避免的。尤其是當乙個專案分成多個模組的時候。
2、一般,把函式、變數、結構體、類等放在.c或者.cpp檔案中,編譯生成.o、.dll等給其他檔案使用。
3、標頭檔案一般放函式、變數、類的宣告。
4、不允許被其他檔案使用的函式用static定義,否則預設為extern
5、一般不要在標頭檔案中定義變數、函式、類,否則容易產生重複定義。
6、要使用其他模組(檔案)定義的函式、變數等,直接包含其標頭檔案。
例#include
void print(void)sqlist;
#endif
2、在檔案f1.c中定義了乙個函式initlist對結構體進行初始化操作
#include
#include
void initlist(sqlist *l){
l->length=0;
l->listsize=100;
3、在標頭檔案f1.h中對函式進行宣告
#ifndef fun1_h
#define fun1_h
void initlist(sqlist *l);
#endif
4、在檔案f2.c中有main函式定義了乙個結構體型別變數,並呼叫外部函式initlist進行初始化
#include
#include//為了使用結構體型別
#include//為了呼叫外部函式
void main(){
sqlist la;
initlist(&la);
printf("%d,%d\n",la.length,la.listsize);
5、正確編譯,執行,得到結果 0,100
C語言中矩陣定義問題
c語言在進行矩陣運算的時候可以按照下邊來定義 typedef struct matrix matrix 向量可以定義成下式 typedef struct vector vector 這樣可以包括所有維數的向量和矩陣。要在初始化的時候給矩陣和向量申請空間,不然為空會報錯,在申請空間時定義函式 void...
C語言中巨集定義的問題
巨集定義的基本用法是 替換 例如 define max 10 int a max c編輯器對巨集在預處理 預編譯 時展開,即替換 把a max 中的max 替換為 10。c預處理器是對巨集不做任何語法上的檢測,即 換 那麼這個 換 有時候就存在乙個運算優先順序的問題。例如 include defin...
c 語言中的巨集定義
巨集定義 巨集定義是c提供的三種預處理功能的其中一種,這三種預處理包括 巨集定義 檔案包含 條件編譯 1.不帶引數的巨集定義 巨集定義又稱為巨集代換 巨集替換,簡稱 巨集 格式 define 識別符號 字串 其中的識別符號就是所謂的 符號常量,也稱為 巨集名 預處理 預編譯 工作也叫做巨集展開 將巨...