java基礎改學C (四)預處理

2021-07-31 11:18:38 字數 1277 閱讀 4402

//注意:預處理不是c++語言的組成部分。   預處理功能包括:(1)巨集定義 (2)檔案包含 (3)條件編譯

先說檔案包含:

//2     (2)檔案包含

#include

//  #include "iostream"

//這種常用在檔案頭部的被包含的檔案稱為 「標頭檔案」

標頭檔案一般包含以下幾類內容:

(1) 對型別的宣告。

(2) 函式宣告。

(3) 內建(inline)函式的定義。

(4) 巨集定義。用#define定義的符號常量和用const宣告的常變數。

(5) 全域性變數定義。

(6) 外部變數宣告。如entern int a;

(7) 還可以根據需要包含其他標頭檔案。

這些內容,只要有乙個 「宣告」 的概念就可以了,與宣告(.h 檔案)相對應的是 實現,一般是 .cpp 檔案。

(1)巨集定義

#define a 10 a 只是用乙個符號代替 10,在預編譯時把所有符號常量替換為所指定的字串,存粹是替換

帶引數的巨集

#define s(a,b) a*b

//由於c++增加了內建函式(inline), 因此基本上已不再用#define命令定義帶引數的巨集了,主要用於條件編譯中。

這種替換很容易就能想到,比如 s(1,2) 會被替換為 1*2

(3)條件編譯    直接看程式demo

#define run

usingnamespace std; 

int main(int argc,const

char * argv) { 

#ifndef run //理解: if there is no definition of run,then:實際編譯這段話

cout<10,23)<#else    //理解:else:否則,編譯下面這段話

cout

<<"123"

<#endif   //結束 if

// 與普通的 if else 語句不同的是,條件編譯相當於,把**刪去了

cout

<<"what the ****"<<

endl;

//可以通過表示式判斷是否編譯,像普通的 if

#if 1

cout

<<123;

#else

cout<<321;

#endif

cout

<<234;

// #else 語句可以沒有

C語言基礎 預處理

預處理 1.c語言在對源程式進行編譯之前,會先對一些特殊的預處理指令作解釋 比如之前使用的 include檔案包含指令 產生乙個新的源程式 這個過程稱為編譯預處理 之後再進行通常的編譯 2.為了區分預處理指令和一般的c語句,所有預處理指令都以符號 開頭,並且結尾不用分號 3.預處理指令可以出現在程式...

C 基礎 預處理指令

預處理指令指導編譯器在實際編譯開始前對資訊進行預處理。下表是一些常用預處理指令 預處理器指令 描述 define 它用於定義一系列成為符號的字元。undef 它用於取消定義符號。if它用於測試符號是否為真。else 它用於建立復合條件指令,與 if 一起使用。elif 它用於建立復合條件指令。end...

C語言基礎 預處理

預處理 預處理命令是由ansi c統一規定的,但是它們不是c語言本身的組成部分,不能直接對它們進行編譯 因為編譯程式不能識別它們 必須在對程式進行通常的編譯 包括詞法和語法分析 生成 優化等 之前,先對程式中這些特殊的命令進行 預處理 即根據預處理命令對程式作相應的處理 例如,若程式中用 defin...