C語言學習 編譯預處理和巨集 及標準標頭檔案結構

2021-10-04 13:11:09 字數 1522 閱讀 1969

前言:c預處理在程式執行之前檢視程式(稱之為預處理器)。根據程式中的預處理指令,預處理器把符號替換成其表示的內容。本篇主要是為了寫「大程式結構」作準備,其中包含了巨集的說明和基本用法,還有#include"",或#include<>的區別,還有」標準標頭檔案結構「

一、編譯預處理和巨集

1、編譯預處理指令

2、巨集的說明和基本用法

1)例子:

/* #define 《名字》 《值》 */

#define pi 3.14

//一般名字都用全大寫

2)沒有值的巨集

#define _debug
這類巨集是用於條件編譯的,後面有其它的編譯預處理指令來檢查這個巨集是否已被定義過了;

3)帶引數的巨集的原則

#define squaer(x) ((x)(x))

//這是乙個類巨集函式,實現平方的功能

#define min(a,b) ((a)>(b)?(a):(b))

//可以帶多個引數

應用場景

二、大程式結構

1、多個源**檔案

多個.c檔案,

2、專案

3、編譯單元

4、標頭檔案(可以看成是乙個合同)

5、#include「 "、還是#include<>

6、標準標頭檔案結構

為了避免重複宣告結構,例子:

--修訂後的name_st標頭檔案,避免重複

#ifndef names_h_

#define names_h_

//多個.c檔案共用的巨集可以寫在標頭檔案程式裡

#define slen 32

//多個.c檔案共用的變數也可以寫在標頭檔案裡

extern

int i;

//結構宣告

struct names_st

;//型別定義

typedef

struct name_st names;

//函式原型

void

get_names

(names *);

void

show_names

(const names *);

char

*s_gets

(char

* st,

int n)l

#endif

注:

C語言學習筆記 6編譯預處理

2016年1月21日10 08 37 韓 概述 1 檔案包含 2 巨集定義與取消巨集定義 3 條件編譯 4 assert斷言與靜態斷言 預處理命令兩種形式 include 檔名 include 檔名 檔名可以是包含檔案的路徑名,如 include 此時兩種形式沒有什麼區別 include d tes...

C語言學習之預處理

編譯乙個c程式需要經過預處理 編譯 彙編和鏈結幾個步驟,預處理是在編譯之前所做的工作,預處理其實就是對原始檔做一些編輯工作,為編譯做好準備。1.條件編譯 if constant expression endif 或者 if constant expression elif constant expr...

c語言學習筆記 預處理

編譯的幾個階段 我們平時使用的編譯器,其實準確來講應該叫編譯工具鏈,因為其中包括了不止一種編譯器,他們之間相互銜接,完成將程式轉化為二進位制 的功能 主要分為4個階段,預處理 c 彙編.s 編譯.o 鏈結 axf hex bin 四個過程 常用預處理指令 include if,end,define ...