(三十一)C語言學習筆記(二) 函式與程式結構

2021-07-04 01:37:54 字數 855 閱讀 4397

1.extern

在乙個源程式的所有檔案中,乙個外部變數只能在某個檔案中定義一次,而其他檔案可以通過extern宣告來訪問它。如在file1中定義變數:

int x1 = 5;

在file2中可以宣告:

extern int x1;

來使用x1變數。

2.static

用static宣告限定外部變數與函式,可以將其宣告的物件的作用於限定為被編譯原始檔的剩餘部分,其他檔案不能訪問,達到隱藏外部物件的目的。

static也可以用於宣告內部變數,static型別的內部變數和自動變數一樣,只能在該函式中被使用,但是它與自動變數不同的是,不管其所在函式是否被呼叫,它一直存在,而不像自動變數一樣,隨著所在函式的被呼叫和退出而存在和消失。換句話說,static型別的內部變數是一種只能在某個特定函式中使用但一直佔據儲存空間的變數。

3.預處理之條件包含

#ifndef是常見的預處理的條件包含命令。其主要作用是保證在乙個原始檔中只包含一次標頭檔案。

預處理階段會將#include命令整個替換成標頭檔案,因此如果標頭檔案裡有複雜的包含關係,比如a.cpp包含a.h和b.h,a.h裡包含b.h,那麼b.h中如果有#ifndef,那麼在a.cpp中就只會有一次b.h的出現了。

在標頭檔案中按照程式設計規範,是應該只有宣告而沒有定義的(即函式只有宣告沒有實現,變數只有宣告沒有賦初值和分配空間),那麼在乙個原始檔中包含多次宣告其實並沒有問題。但是c的語法並沒有限制標頭檔案裡不能包含實現,因此#ifndef主要是為了防止在程式中出現重複定義的情況。

c語言學習筆記十一

檔案i o data msg string hello,world n len msg text global start start movl len,edx movl msg,ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int...

c語言學習筆記十一

檔案i o data msg string hello,world n len msg text global start start movl len,edx movl msg,ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int...

c語言學習筆記十一

檔案i o data msg string hello,world n len msg text global start start movl len,edx movl msg,ecx movl 1 ebx movl 4 eax int 0x80 movl 0 ebx movl 1 eax int...