C語言的預編譯

2021-06-26 06:26:49 字數 1504 閱讀 2139

預處理功能主要包括巨集定義,檔案包含,條件編譯三部分。分別對應巨集定義命令,檔案包含命令,條件編譯命令三部分實現。

預處理過程讀入源**,檢查包含預處理指令的語句和巨集定義,並對源**進行響應的轉換。預處理過程還會刪除程式中的注釋和多餘的空白字元。

預處理指令是以#號開頭的**行。#號必須是該行除了任何空白字元外的第乙個字元。#後是指令關鍵字,在關鍵字和#號之間允許存在任意個數的空白字元。整行語句構成了一條預處理指令,該指令將在編譯器進行編譯之前對源**做某些轉換。

指令             用途

#            空指令,無任何效果

#include    包含乙個源**檔案

#define     定義巨集

#undef     取消已定義的巨集

#if          如果給定條件為真,則編譯下面**

#ifdef       如果巨集已經定義,則編譯下面**

#ifndef     如果巨集沒有定義,則編譯下面**

#elif         如果前面的#if給定條件不為真,當前條件為真,則編譯下面**

#endif      結束乙個#if……#else條件編譯塊

#error      停止編譯並顯示錯誤資訊

#else       略

#error     指令將使編譯器顯示一條錯誤資訊,然後停止編譯。

#line        指令可以改變編譯器用來指出警告和錯誤資訊的檔案號和行號。

#pragma  指令沒有正式的定義。編譯器可以自定義其用途。典型的用法是禁止或允許某些煩人的警告資訊。

檔案包含

在程式中包含標頭檔案有兩種格式:

#include

#include "my.h"

l第一種方法是用尖括號把頭檔案括起來。這種格式告訴預處理程式在編譯器自帶的或外部庫的標頭檔案中搜尋被包含的標頭檔案。第二種方法是用雙引號把頭檔案括起來。這種格式告訴預處理程式在當前被編譯的應用程式的源**檔案中搜尋被包含的標頭檔案,如果找不到,再搜尋編譯器自帶的標頭檔案。

採用兩種不同包含格式的理由在於,編譯器是安裝在公共子目錄下的,而被編譯的應用程式是在它們自己的私有子目錄下的。乙個應用程式既包含編譯器提供的公共標頭檔案,也包含自定義的私有標頭檔案。採用兩種不同的包含格式使得編譯器能夠在很多標頭檔案中區別出一組公共的標頭檔案。    

貼上有用的**:

#include#include

#include

#define six 6

#define seven 7

#define cube(x) (x)*(x)*(x)

#define version "tzs"

#define paste(n) "最終勝利者是:"#n

#define num(a,b,c) a##b##c

#define str(a,b,c) a##b##c

#define debug 1

intmain()

C語言的預編譯

technorati 標籤 c,預編譯,巨集,檔案替換,條件編譯 由 源 到 可執行檔案 的過程包括四個步驟 預編譯 編譯 彙編 鏈結。所以,首先就應該清楚的首要問題就是 預編譯只是對程式的文字起作用,換句話說就是,預編譯階段僅僅對源 的單詞進行變換,而不是對程式中的變數 函式等。預編譯指令的基本知...

C語言的預編譯

預編譯指令基本分類如下 類別指令 預定義符號 file line date time stdc 巨集 define 檔案包含 include 條件編譯 if elif else ifdef ifndef endif 還有一些指令,名稱和功能如下表 指令功能 空指令 undef 移除乙個空定義 err...

c語言中預編譯

預編譯又被稱為預處理,是做 文字的替換工作。處理 開頭的指令。就是為編譯做預備工作的準備。常見的預編譯指令有三種 1 include指令 該指令指示編輯器將 檔案的全部內容插入此處,如果使用 代表在系統指定目錄下搜尋檔案,使用 代表現在當前目錄下搜尋檔案,然後在系統預設目錄下搜尋。2 define指...