C 多檔案結構和編譯預處理命令

2021-08-14 09:42:19 字數 2438 閱讀 3252

<1>一般乙個專案至少劃分3個部分:類定義檔案,類實現檔案,類使用檔案。

<2>外部變數:在原始檔1中定義的變數,可以在原始檔2通過關鍵字加以宣告之後應用。

//原始檔1

#includeusing namespace std;

int i=1;

int main()

//原始檔2

#includeusing namespace std;

extern int i;

對外部變數的宣告可以是定義性宣告,也可以是引用性宣告,定義性宣告是指extern int i=2;宣告同時定義,引用性宣告指extern int i;只是對原始檔1中的變數i進行引用。

<2>外部函式:tip:通常情況下,對變數和函式的定義都放在原始檔中,而對外部變數和外部函式的引用性宣告則放在標頭檔案中。

<3>將不希望被其他編譯單元引用的函式和變數放在匿名的命名空間中。

<4>編譯預處理

第一,#include《檔名》:按標準方式搜尋,檔案位於系統目錄的include子目錄下。

第二,#include"檔名":首先在當前目錄搜尋,如果沒有,在再按標準方式搜尋。

第三,#define aaa:表示aaa已經被定義過了,#undef的作用是刪除由#define定義過的巨集,使之不再起作用。

第四,條件編譯語句:可以使得同乙個源程式在不同的編譯條件下產生不同的目標**(可以用於除錯**)

(1)形式一:

#if 常量表示式

程式段#endif

常量表示式非零時編譯本端程式

(2)形式二:

#if 常量表示式

p1...

#else

p2...

#endif

常量表示式非零是編譯p1,為零是編譯p2

(3)形式三:

#if 常量表示式1

p1...

#elif 常量表示式2

p2...

......

#elif 常量表示式n

pn...

#else

p(n+1)...

#endif

(4)形式四:

#ifdef 識別符號

p1...

#else

p2...

#endif

識別符號是否曾經定義過,且未經過undef刪除

(5)形式五:

#ifndef 識別符號

p1...

#else

p2...

#endif

如果識別符號未被定義過,則執行p1,否則p2

第五,defined操作符

用法:defined(識別符號)

若是表示符被#define定義過且未經#undef刪除,則上式返回非零

第六,當需要標頭檔案1,標頭檔案2時,要滿足,標頭檔案1中的小的標頭檔案head.h在標頭檔案2中不出現。

#include"file1.h"

#include"file2.h"

int main()

#include"head.h"

p...

#include"head.h"

p...

class fun

;

如何解決呢?

#ifndef head_h

#define head_h

class fun

;#endif

C 程式設計必知 多檔案結構和編譯預處理命令

一.c 程式的多檔案結構 之前雞啄公尺給大家看了很多比較完整的c 程式的例子,大家可能發現了,它們的結構基本上可以分為三個部分 類的宣告 類的成員函式的實現和主函式。因為 比較少,所以可以把它們寫在乙個檔案中,但是我們實際進行軟體開發時,程式會比較複雜,量比較大,乙個程式按結構至少可以劃分為三個檔案...

C 編譯預處理和巨集 檔案

巨集定義 define 名字 值 直接文字替換 注意結尾沒有分號,因為不是c語句 名字必須是乙個單詞,值可以是各種東西 如果乙個巨集的值超過一行,最後一行之前的行末需要加 預定義的巨集 line 源 當前所在的行號 fine 源 檔案的檔名 date 編譯時的日期 time 編譯時的時間 像函式的巨...

c 預處理和預處理命令

預處理發生在編譯之前,預處理輸出的是乙個單一的檔案,這個檔案被送到編譯器,進行編譯。每條預處理命令都控制預處理器的行為。每條預處理命令佔據一行,有以下的格式 character 預處理命令 one of define,undef,include,if,ifdef,ifndef,else,elif,e...