變量,函數,類的聲明,定義,實現的學習總結(不斷增加中)

extern作用總結 
extern int i;
    指明這裏的i只是聲明,否則i爲全局變量的話會看作定義,有可能違反一次定義法則(ODR)
    extern foo();
    將函數"在其他地方定義"變爲顯式的
    同名常量可以出現在不同的編譯單元中,且值可以不一樣哦!
    //------foo.c--------
    const char name = 'h';
    //--------------------
  //--------bar.c--------
    const char name = 'j';
    //-----------------------
export作用
    export foo() {};
    export template<typename T> foo(T t) {};
    告訴編譯器,在其他編譯單元中可能需要這個定義。
全局對象和非內聯函數只能有一個定義,而內聯函數可以有多個相同的定義(實際情況是多個不同的定義也可以,其實內聯函數和static函數一樣,只是在當前編譯單元有效。其實其他編譯即使單元聲明的此函數,但沒有它的定義,連接時會提示無法找到此函數。)
函數聲明和類定義可見是編譯時的需要,而(成員)函數的定義可見是連接時的需要。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章