當我們學c語言我們學些什麼.
[1]編譯機制
當我們寫好c的**,生產了程式,這中間到底做了些什麼?
這個就是c語言的編譯過程 我們分別來解析這上面的過程。
我們寫出我們第乙個c程式。
1 #include21>預編譯3int
main()
~
我們可以通過 gcc -e 來生產預處理檔案
(1)將所有的#define刪除,並且展開所有的巨集定義。說白了就是字元替換
(2)處理所有的條件編譯指令,#ifdef #ifndef #endif等,就是帶#的那些
(3)處理#include,將#include指向的檔案插入到該行處
(4)刪除所有注釋
(5)新增行號和檔案標示,這樣的在除錯和編譯出錯的時候才知道是是哪個檔案的哪一行
(6)保留#pragma編譯器指令,因為編譯器需要使用它們。
2>編譯
通俗點說就是吧人類能讀懂的c語言翻譯成機器能聽懂的語言
通過 -s 引數可以吧**編譯成彙編**
1 .file "hello.c"通過-c 可以生成二進位制檔案 .o 這裡的的就是機器碼了2 .section .rodata
3 .lc0:
4 .string "hello world"
5 .text
6 .globl main
7 .type main, @function
8 main:
9 .lfb0:
10 .cfi_startproc
11 pushq %rbp
12 .cfi_def_cfa_offset 16
13 .cfi_offset 6, -16
14 movq %rsp, %rbp
15 .cfi_def_cfa_register 6
16 leaq .lc0(%rip), %rdi
17 movl $0, %eax
18 call printf@plt
19 movl $0, %eax
20 popq %rbp
21 .cfi_def_cfa 7, 8
22 ret
23 .cfi_endproc
24 .lfe0:
25 .size main, .-main
26 .ident "gcc: (ubuntu 6.3.0-12ubuntu2) 6.3.0 20170406"
27 .section .note.gnu-stack,"",@progbits
3>連線
說白了 我們的prinf這個函式並不是我們自己寫的而是庫檔案裡面的內容
連線的作用就是讓庫檔案跟我們寫的**產生聯絡,然後我們**中能代用庫中方法
C語言簡單入門01
從 hello,world 認識c語言 test1 從 hello,world 認識c語言 include 預處理命令 int main 主函式 1.注釋語句 注釋是程式開發時用來解釋說明的語句,作用是用來提高程式的可讀性,c c 在編譯過程中忽略注釋,注釋的內容不被轉換為目標 注釋的形式有兩種 1...
C語言入門day01
前言 剛接觸一門語言的時候,可能覺得語法詭異沒法理解,不過不要緊,學語言最忌諱糾結於語法,先記下來,碼就完了!編譯器個人比較喜歡用c free5,介面簡潔,對於初學者友好。軟體 安裝教程 這是乙個只有main主函式沒有變數的乙個小例子,下面我們講解一下這段程式 程式的第一行 include 是預處理...
C 入門記錄01
因公司有需求需要使用c 進行開發,這裡記錄下這幾天的一些例項 step1 從開發環境起 這裡是用的vs2019進行的開發工作 如果環境沒有c 開啟vs2019 工具 獲取工具和功能 step2 開始第乙個程式的建立 先從控制台程式建立 檔案 新建 專案 控制台應用 net core c 然後就會生成...