C語言 常見問題
每次都要查就乾脆筆記下來了
Jul 12, 2021
static function
在.h檔中宣告成static的函式,該函式的可見範圍就只有直接include該.h檔的.c檔。假設有數個.c檔同時引用的這個.h檔,那麼每個.c檔看到的static的函式都是獨立且互不影響的。這是由於不同.c檔在引用時會產生不同的.o檔。
extern 宣告與用法
既然要使用extern,那麼該變數勢必會成為一個全域變數。
在.c檔案開頭或.h檔案中宣告之後可以提供給其他檔案中使用,這時在其他檔案中透過 extern
宣告變數會在其他地方被定義
若該變數為一個指向struct的pointer,在使用前會需要一個malloc, calloc等函式分配一個空間並回傳位址給該變數
main裡面,可以include.c嗎?
#include 等同於複製貼上
也就是說會刪掉目前#include所在的這一行,並將引用的內容全部原地複製貼上
所以確實是可以include .c 但通常不會這麼做
如果.c為函式用法,只需include .h 編譯器會找到.c
若.c為其他程式,可以利用makefile分別編譯完,最後link在一起
void main
首先,標準的C/C++當中並沒有定義void main(), 而main的回傳值必須要是int,這樣返回值才能傳遞給程式的呼叫者(如OS),等同於 exit(0),來判斷函式的執行結果。
雖然現在多數編譯器可以支援void main(),有些編譯器如c99會在沒有return的main當中自動加入return 0,但為了移植的通用性最好不要這樣做。