c使用匯編的變量

C文件中的變量和函數名 name, 對應於 彙編語言中的 _name,即在變量或者函數名前加一個"_".

  因爲C++ 支持重載,便可以定義函數名相同,但參數類型不一樣的函數。其在編譯時,由編譯器 根據函數的參數類型肯定一個實際的函數名(或者彙編語言中的函數名),這個命名規則叫比較複雜了,不像C,僅僅是在變量名 和 函數名前加下劃線。

  因爲這個緣由,在C文件 定義一個名爲name 的全局變量或函數 和 cpp文件中定義的名爲name 全局變量/函數,其實際的變量名是不一樣的。若是在cpp文件中引用c文件中的全局變量或者函數,必須使用在函數聲明前加「 extern "C" ", extern "C" 保證了其真實的名稱(從彙編語言視角)等於c/Cpp 文件中的 變量/函數名 前綴一個"_"(下劃線)。

  從這個角度,咱們不難明白
    1. 若是要在c文件中使用匯編語言中的變量,則在彙編語言中定義變量是必須以 下劃線 開頭,在c文件聲明中則須要不含這個下劃線。
    2. 若是要在cpp 文件中使用匯編語言中的變量,則在彙編語言中定義變量是也必須如下劃線 開頭,在cpp文件,聲明時中則必須包含extern C" 關鍵字,而且變量名必須不帶下劃線。

 函數

相關文章
相關標籤/搜索