c語言預(yù)編譯指令有哪些柱衔?
預(yù)處理器的主要作用就是把通過預(yù)處理的內(nèi)建功能對一個(gè)資源進(jìn)行等價(jià)替換,最常見的預(yù)處理器指令有:文件包含愉棱、條件編譯唆铐、布局控制和宏替換4種。
文件包含
#include是一種最為常見的預(yù)處理奔滑,作為文件的引用艾岂。
條件編譯
#if、#ifndef等朋其,主要是進(jìn)行預(yù)編譯時(shí)進(jìn)行有選擇的挑選王浴,注釋掉一些指定的代碼,以達(dá)到版本控制梅猿、防止對文件重復(fù)包含的功能氓辣。
布局控制
#pragma,這也是我們應(yīng)用與處理的一個(gè)重要部分粒没,主要功能是為編譯程序提出非常規(guī)的控制流信息筛婉。
宏替換
#define,這是最常用的用法癞松,它可以定義符號常量爽撒、函數(shù)功能、重新命名响蓉、字符串的拼接等各種功能硕勿。
常見的預(yù)處理指令
#define宏定義
#undef未定義宏
#include文本包含
#ifdef如果宏被定義就進(jìn)行編譯
#ifndef如果宏未被定義就進(jìn)行編譯
#endif結(jié)束編譯塊的控制
#if表達(dá)式非零就對代碼進(jìn)行編譯
#else
#elif這是一種#else和#if的組合選項(xiàng)
#line改變當(dāng)前的行數(shù)和文件名稱
#error輸出一個(gè)錯(cuò)誤信息
#pragma為編譯程序提供非常規(guī)的控制流信息。
預(yù)定義標(biāo)識符
為了處理一些有用的信息枫甲,預(yù)處理定義了一些預(yù)處理標(biāo)識符源武,雖然各種編譯器的預(yù)處理標(biāo)識符不盡相同,但他們都會處理下面四種:
__FILE__:正在編譯的文件名
__LINE__:正在編譯的文件的行號
__DATE__:編譯時(shí)刻的日期字符串
__TIME__:編譯時(shí)刻的時(shí)間字符串
注意:
#include
編譯器從標(biāo)準(zhǔn)庫路徑開始搜索想幻。
#include “stdio.h”
編譯器從用戶的工作路徑開始搜索粱栖。
#error this code is c,
not python.
在預(yù)編譯時(shí),會報(bào)錯(cuò)脏毯,如上信息闹究。