c語言入門 01

2022-04-10 12:43:48 字數 1835 閱讀 3219

當我們學c語言我們學些什麼.

[1]編譯機制

當我們寫好c的**,生產了程式,這中間到底做了些什麼?

這個就是c語言的編譯過程 我們分別來解析這上面的過程。

我們寫出我們第乙個c程式。

1 #include2

3int

main()

~

1>預編譯

我們可以通過 gcc -e 來生產預處理檔案

(1)將所有的#define刪除,並且展開所有的巨集定義。說白了就是字元替換

(2)處理所有的條件編譯指令,#ifdef #ifndef #endif等,就是帶#的那些

(3)處理#include,將#include指向的檔案插入到該行處

(4)刪除所有注釋

(5)新增行號和檔案標示,這樣的在除錯和編譯出錯的時候才知道是是哪個檔案的哪一行

(6)保留#pragma編譯器指令,因為編譯器需要使用它們。

2>編譯

通俗點說就是吧人類能讀懂的c語言翻譯成機器能聽懂的語言

通過 -s 引數可以吧**編譯成彙編**

1     .file   "hello.c"

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

通過-c 可以生成二進位制檔案 .o 這裡的的就是機器碼了

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 然後就會生成...