前言: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 ...