C 關於標頭檔案和原始檔 編譯和鏈結問題

2021-08-08 23:46:12 字數 413 閱讀 2721

所有的標頭檔案,不會被編譯, #include ***.h的意義是    把某個標頭檔案的內容全部都搬進原始檔裡面。

標頭檔案裡面不能 單獨宣告 乙個  int a; char b; 這種變數。 因為在#include 後,會有多個定義。  

定義永遠只能有乙個,但是宣告可以有很多個。 所以在鏈結後,如果多個cpp檔案#include後,會有多個定義。(這種叫外部鏈結)  鏈結的時候不知道以哪個鏈結為準。

還有的東西是內部鏈結,那麼定義的東西只會在內部生效,鏈結的時候不會出現上面的問題。 

const int a = 5;

inline void pp() ;

static int b ;

class a  

以上4種可以在.h檔案中定義。 但是注意a中如果有函式,一定要在a類裡面寫出函式的實現。

C 關於標頭檔案和原始檔的分別

關於標頭檔案和原始檔的分別 首先,我們可以將所有東西都放在乙個.cpp檔案內.然後編譯器就將這個.cpp編譯成.obj,obj是什麼東西?就是編譯單元了.乙個程式,可以由乙個編譯單元組成,也可以有多個編譯單元組成.如果你不想讓你的源 變得很難閱讀的話,就請使用多個編譯單元吧.乙個函式不能放到兩個編譯...

標頭檔案和原始檔

一.例1 test.h void show test.cpp include using namespace std void show includeproblem.cpp include test.h int main 可以看到 includeproblem.cpp檔案彙總 include te...

關於標頭檔案和原始檔的分別

關於標頭檔案和原始檔的分別 首先,我們可以將所有東西都放在乙個.cpp檔案內.然後編譯器就將這個.cpp編譯成.obj,obj是什麼東西?就是編譯單元了.乙個程式,可以由乙個編譯單元組成,也可以有多個編譯單元組成.如果你不想讓你的源 變得很難閱讀的話,就請使用多個編譯單元吧.乙個函式不能放到兩個編譯...