宣告無引數巨集一般形式為:
#define 標識字串
其中的「#」表示這是一條預處理命令,凡是以「#」開頭的均為預處理命令。「 define"為巨集定義命令,「標 識符「為所定義的巨集名,」字串」可以是常數、表示式、格式串等。
在前面介紹過的符號常量的定義就是一種無參巨集定義。此外,常對程式中反覆使用的表示式進行巨集定義
例如:define m (y*y+3)
它的作用是指定識別符號m來代替表示式(
y*y+3).在編寫源程式時,所有的(
y*y+3)都可由m代替,而對源程式作編譯時,將先由預處理程式進行巨集
代換,即用(
y*y+3)表示式去置換所有的巨集名m,然後再進行編譯.
// 預處理.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#define m 3.1415926
int _tmain(int argc, _tchar* argv)
結果:
有引數的巨集類似於有引數的函式,其定義的一般形式為:
#define 識別符號(形象表) 字串
如果有多個形參,像函式引數一樣已逗號隔開。在程式中使用有引數巨集的形式是:
識別符號(實參表)
例如:
#include "stdafx.h"
#define _s(r) 3.1415926*r*r
int _tmain(int argc, _tchar* argv)
結果:
●檔案包含是c預處理程式的另乙個重要功能。
●檔案包含命令列的一般形式為:
# include"檔名"
在前面我們已多次用此命令包含過庫函式的標頭檔案。例如:
#include"stdio. h
#include math. h
●檔案包含命令的功能是把指定的檔案插入該命令列位置取代該命令列,從而把指定的檔案和當前的源程式檔案連成乙個原始檔。
在程式設計中,檔案包含是很有用的。乙個大的程式可以分為多個模組由多個程式設計師分別程式設計。有些公用的符號常量或巨集定義等可單獨組成乙個檔案,在其它檔案的開頭用包含命令包含該檔案即可使用。這樣,可避免在每個檔案開頭都去書寫那些公用量,從而節省時間,並減少出錯。
預處理程式提供了條件編譯的功能。可以按不同的條件去編譯不同的程式部分,因而產生不同的目標**檔案。這對於程式的移植和除錯是很有用的。
以下的
#ifndef 相當於if(!程式段),其他的和if else用法一樣
1、第一種形式:
#ifdef 識別符號
程式段1
#else
程式段2
#endif
#include "stdafx.h"
//如果定義m的話執行定義n,否則定義o
#ifdef m "我是m"
#define n "我是n"
#else
#define o "我是o"
#endif
int _tmain(int argc, _tchar* argv)
2、第二種形式:
#ifndef 識別符號
程式段1
#else
程式段2
#endif
#include "stdafx.h"
//如果沒有定義m的話執行定義n,否則定義o
#ifndef m "我是m"
#define m "我是m"
#else
#define o "我是o"
#endif
int _tmain(int argc, _tchar* argv)
3、第三種形式
#if 常量表示式
程式段1
#else
程式段2
#endif
這個相當於if else
預處理命令
和 操作符是和 define 巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...
預處理命令
我們可以在c源程式中插入傳給編譯程式的各中指令,這些指令被稱為預處理器指令,它們擴充了程式設計的環境。現把常用的預處理命令總結如下 1.預處理程式 按照ansi標準的定義,預處理程式應該處理以下指令 if ifdef ifndef else elif endif define undef line ...
預處理命令
ansi c標準規定可以在c源程式中加入一些 預處理命令 來改進程式設計環境,提高程式設計效率。這些預處理指令都是由ansi c統一規定的,但是它並不是c語言本身的組成部分,不能直接對其進行編譯。c語言和其它高階程式語言的乙個重要區別就是可以使用預處理指令和它的預處理功能。預處理是指由預處理程式負責...