1、標頭檔案的包含方式
#include
預設是從 /usr/include/ 目錄下搜尋檔案
#include "stdio.h"
#include "../stdio.h"
先在當前目錄下搜尋檔案,如果沒有,再去 /usr/include 下找
2、c語言的編譯步驟
預處理(預編譯)
處理 「#」 開頭的內容,進行替換(執行巨集替換)、去掉注釋、
生成預處理檔案,字尾名-.i
編譯編譯器將高階語言翻譯成組合語言
生成彙編檔案,字尾名-.s
彙編把彙編檔案翻譯成機器指令
生成目標檔案,字尾名是-.o
鏈結用於將目標檔案和標準庫鏈結,得到可執行檔案
生成的是最終的可以執行的程式
3、gcc命令的使用
gcc -e
對檔案進行預處理,生成預處理檔案
gcc -s
對檔案進行編譯,生成彙編檔案
gcc -c
對檔案進行彙編,生成目標檔案
gcc -o
給生成的檔案重新命名
4、執行的程式被讀到記憶體中執行(未執行的程式被儲存在u盤/硬碟等儲存裝置中),記憶體最小的儲存單位是位元組(b)。記憶體統一為每個位元組分配了乙個編號,編號的位數固定。例如32位系統,其位址編號長度為32位(4b長度),其位址值範圍為0x0000 0000-0xffff ffff
5、int a=10;
(1)、int(變數型別)——代表變數為「int」型別,進而確定變數「a」所代表的儲存空間佔4b
(2)、a(變數名)——代表某一段記憶體,對「a」的操作就是對這一段記憶體進行操作。變數a,意指符號a(變數名)及其所代表的四位元組長度的實際物理空間(變數空間)
(3)、a=10——將常量「10」賦給變數「a」 。將十進位制「10」轉化為二進位制「1010」後,儲存在「a」變數所代表的記憶體空間裡。該記憶體空間的位址由4b儲存空間第乙個位元組的位址指定。int型變數a所代表的位址空間為四個位元組長度,其首位元組的位址隨機分配,也是隨時變化的
注:字元常量儲存在計算機儲存單元時,並不是儲存字元,而是以其**儲存的(一般是ascii碼)。例如字元『a』的ascii**是97,因此,在儲存單元中存放的是97(以二進位制形式存放)。
預編譯標頭檔案的問題(gcc)
首先 說說預編譯的好處 就是提高編譯速度 其次 預編譯標頭檔案可以用在一下場合 1 提供某種固定功能和不變的型別定義 2 減少編譯的時間 接著 說說預編譯可能帶來的問題 在預編譯中 gcc 會將.h編譯成.gch檔案,按理說只要.h檔案改動就應該重新編譯.gch檔案,但如果沒有將.h檔案設定為.gc...
gcc 標頭檔案 search option
標頭檔案搜尋路徑相關 基本的搜尋順序 1.i dir 2.gcc 環境變數 c include path,cplus include path,objc include path 3.gcc 系統標準路徑 standard system include directories usr include...
樹莓派使用gcc編譯含mysql h標頭檔案的C語言
雖然ubuntu和樹莓派都是基於linux系統開發的,但是他們的資料庫有所不同。在樹莓派上,我只能夠安裝mariadb server 10.0,而不能安裝mysql server。在執行某些c語言對資料庫操作的程式造成了困擾。ubuntu的 gcc i usr include mysql c l u...