宏
#define命令是C語言中的一個宏定義命令,它用來將一個識別符號定義為一個字串,該識別符號被稱為宏名,被定義的字串稱為替換文本. 使用宏時是簡單的代碼段替換.
#define的概念
簡單的宏定義
#define <宏名> <字串>
例: #define PI 3.1415926
注:使用簡單的宏定義可以定義一些常量,區分簡單宏定義和const valtype 的區別(優先使用const)
帶引數的宏定義(宏函式)
#define <宏名> (<引數表>) (<宏體>)
例: #define Max(a, b) ( (a)>(b) ? (a) : (b))
注:簡單代碼段使用宏函式比使用函式好,免去了函式呼叫的開銷,提高運行效率
宏的使用情形
- 頭檔案包含
把源程式中的#include 擴展為檔案正文,即把包含的.h檔案找到并展開到#include 所在處 - 條件編譯
前處理器根據#if和#ifdef等編譯命令及其后的條件,將源程式中的某部分包含進來或排除在外,通常把排除在外的陳述句轉換成空行- #if 命令
#if 整型常量運算式1 程式段1 #elif 整型常量運算式2 程式段2 #elif 整型常量運算式3 程式段3 #else 程式段4 #endif - #ifdef
#ifdef 宏名 程式段1 #else 程式段2 #endif
- #if 命令
- 宏展開
前處理器將源程式檔案中出現的對宏的參考展開成相應的宏定義,即本文所說的#define的功能,由前處理器來完成,這里是單純的替換與展開 - 避免頭檔案重復參考
#ifndef INCLUDE_NAME_H #define INCLUDE_NAME_H //頭檔案內容 #endif
define中的三個特殊符號:#,##,#@
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y表示x連接y, 如int n = Conn(123,456); // 結果就是n=123456;#@x表示給x加單引號, 如char a = ToChar(1); //結果就是a='1';#x表示給x加雙引號, 如std::string str = ToString(12345); //結果就是std="12345";
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/499601.html
標籤:C++
上一篇:第2章 開始學習C++
