C語言 常見問題

每次都要查就乾脆筆記下來了

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,但為了移植的通用性最好不要這樣做。

--

--

Qertile 郭泰爾
Qertile 郭泰爾

Written by Qertile 郭泰爾

學習路上順便做點筆記留下痕跡OUO,怕以後忘了曾經所學的這些知識。

Responses (1)