C 編譯和鏈結,一些基礎

2021-09-19 11:35:56 字數 1152 閱讀 5508

計算機記憶體的基本單元是 位(bit)。

位元組(byte/b)通常指的是8位記憶體單元。從這個意義上說,位元組指的就是描述計算機記憶體量的度量單位。然而,c++對位元組的定義與此不同。c++位元組由至少能夠容納實現的基本字符集的相鄰位組成,也就是說,可能取值的數目必須大於等於字元數目。

sizeof運算子返回型別或變數的長度,單位是位元組

#include 為預處理器編譯指令,該編譯指令將導致:在源**被編譯之前,預處理器將 iostream 檔案的內容新增到程式中。即,iostream 檔案的內容將取代程式中的**行#include,原始檔案沒有修改,而是將源**檔案和 iostream 組合成乙個復合檔案,編譯的下一階段將使用該檔案。

上述語句在c++中,在括號中使用void與讓括號空著等效,即函式不接受任何引數。

而在c中,讓括號空著意味著對是否接受引數保持沉默。

endl確保程式繼續執行前重新整理輸出(將其立即顯示在螢幕上),而使用 「\n」 不能提供這樣的保證,這意味著在有些系統中,有時可能在您輸入資訊後再會出現提示。

讓程式能訪問命名空間 std 的方法有多種,下面是其中4種:

using namespace std;放在函式定義之前,讓檔案中所有的函式都能夠使用命名空間 std 中所有的元素。

using namespace std;放在特定函式定義中,讓該函式能夠使用命名空間 std 中的所有元素。

在特定的函式中使用類似using std::cout;這樣的編譯指令,讓該函式能夠使用指定的元素。

完全不使用編譯指令using,而在需要使用命名空間 std 中的元素時,使用字首std::,如:

std::cout <<

"i'm using cout and endl from the std namespace"

<< std::endl;

注意: using 一次性注入某個命名空間的所有名字,這種用法看似簡單實則充滿了風險:只使用一條語句就突然將命名空間中所有成員的名字變得可見了。如果應用程式使用了多個不同的庫,而這些庫中的名字通過using指示變得可見,則全域性命名空間汙染的問題將重新出現。

一些ACM鏈結

武漢大學 felioj 四川大學 中科大 哈工大 華東師範 杭州電子 吉林大學 西南科大 哈工程 湖南大學 福州大學 北航 華中科大 南開大學 北師大 vijos 高中生的oj uva ural sgu spoj el krsu usaco 中國各大高校bbs forum 杭電 浙大 清華 上交 復...

符號鏈結檔案 C 編譯鏈結過程中的一些缺陷

c語言是一門非常古老的語言,創立於1972年,距今已經有48年的歷史,和很多更現代的語言 python c golang 相比,c語言的編譯過程中存在一些缺陷。這些缺陷不僅會加重開發人員的負擔,也會隱藏一些難以發現的bug。而c 為了保持與c的相容,也繼承其中的很多缺陷。下面是一些常見的c 編譯缺陷...

C 編譯和鏈結

我的個人部落格 乙份源 要生成乙份可以執行的程式,需要經過的步驟就是編譯和鏈結。c語言的源 一般以.c和.h結尾,其中的c語言 屬於比較高階的語言,人類可以很輕易的看懂,但是計算機並不能理解,也不能直接執行。計算機只能識別二進位制的資料,c 這種類似於人類自然語言的高階語言,它是不能識別的。所以c語...