原子c語言
A. c語言中的指針類型屬於原子類型還是結構類型
這個要看什麼指針
如果是char *就是原子類型的
結構體的指針就是結構類型
但是要注意各種類型的指針變數所佔內存一樣。
B. 正點原子嵌入式linux驅動開發——Linux C編程入門
這一章主要利用Ubuntu自帶的vi編輯器進行C語言代碼編寫。對原理不感興趣的讀者,可以自行搜索並使用VSCode等編輯器進行操作。
首先,創建一個名為"C_Program"的文件夾,用於管理所有代碼。每次編寫的代碼放在"C_Program"文件夾下的子文件夾中,便於管理。
在"/etc/vim/vimrc"文件中,設置tab為4個空格,並啟用行號顯示,通過在文件最後兩行添加相應的代碼實現。
設置完成後的vi編輯器,用於編寫經典代碼"Hello World!"。創建名為"main.c"的文件,內容如下:
使用"cat"命令查看內容,如圖所示。
進行代碼編譯。Ubuntu下的C語言編譯器為GCC,若Ubuntu18未安裝GCC工具,需手動安裝gcc、g++和make等工具。通過安裝"build-essential"軟體包即可。安裝完成後,使用命令查看,如圖所示。
安裝成功後,GCC編譯器版本為7.5.0,適用於x86架構CPU。對於ARM架構,需要使用針對ARM的GCC編譯器,即交叉編譯器。需記住不同架構下的GCC編譯器不同。
使用GCC編譯器編譯"main.c"文件,GCC命令模式下輸入命令,編譯完成後生成可執行文件"a.out",使用命令"./a.out"執行,如圖所示。
可自定義命名生成的可執行文件,在使用gcc命令時加上"-o"指定文件名,如編譯"main.c"後生成名為"main"的可執行文件,操作如圖所示。
GCC編譯器命令格式如下,主要選項如下:
編寫示例代碼演示GCC錯誤警告,代碼中有兩處錯誤:在第8行少寫了一個分號;第9行中的printf語句錯誤。編譯後,GCC會給出錯誤提示,根據提示修改代碼即可。
GCC編譯流程包括預處理、編譯、匯編和鏈接,預處理展開頭文件、替換宏、解析條件編譯;編譯將預處理後的代碼編譯成匯編代碼;匯編將匯編語言編譯成二進制目標文件;鏈接將多個目標文件鏈接成可執行文件。
使用make命令進行編譯,通過一個Makefile文件描述編譯哪些源碼文件、如何編譯。Makefile跟腳本文件類似,執行系統命令,使用make命令即可自動完成工程編譯,提高開發效率。在Linux下使用最多的GCC編譯器,需要自行編寫Makefile。
創建名為"Makefile"的文件,描述工程中需要編譯的源碼文件和依賴關系。在命令行輸入"make"即可編譯工程,可能遇到編譯失敗的情況。修改Makefile,確保在修改文件後能正確編譯。Makefile中規則描述目標文件及其依賴文件,命令執行更新。
總結,Makefile中規則定義目標文件及其依賴文件,命令執行更新。Makefile的"終極目標"是Makefile文件中第一個規則的目標,沒有指定目標時,默認為目標。Makefile變數用於簡化代碼,變數賦值使用"="或"==","=="只使用已定義的值。模式規則用於編譯所有以特定後綴結尾的文件,自動化變數用於簡化命令執行。Makefile中的偽目標不生成文件,用於避免與實際文件沖突。Makefile支持條件判斷和函數調用,實現邏輯控制和字元串處理。
本章節介紹了在Linux環境下使用GCC和Makefile進行C語言代碼的編譯和執行。學習後可直接進行實踐,實踐過程中會更直觀地理解操作流程。基礎了解即可,具體應用需在實踐中深入體會。