C語言 | 預處理 | 宏定義 | #define


此文主要介紹宏定義,並在介紹宏定義時舉例介紹預處理命令

預處理

參考:C 預處理器 | 菜鳥教程
重要的預處理器指令如下:

指令 描述
#define 定義宏
#include 包含一個源代碼文件
#undef 取消已定義的宏
#ifdef 如果宏已經定義,則返回真
#ifndef 如果宏沒有定義,則返回真
#if 如果給定條件爲真,則編譯下面代碼
#else #if 的替代方案
#elif 如果前面的 #if 給定條件不爲真,當前條件爲真,則編譯下面代碼
#endif 結束一個 #if……#else 條件編譯塊
#error 當遇到標準錯誤時,輸出錯誤消息
#pragma 使用標準化方法,向編譯器發佈特殊的命令到編譯器中

預處理運算符

符號 描述
\ 宏延續運算符。一個宏通常寫在一個單行上。但是如果宏太長,一個單行容納不下,則使用宏延續運算符(\)
# 字符串常量化運算符。在宏定義中,當需要把一個宏的參數轉換爲字符串常量時,則使用字符串常量化運算符(#)。
## 標記粘貼運算符。宏定義內的標記粘貼運算符(##)會合並兩個參數。
defined 預處理器 defined 運算符是用在常量表達式中的,用來確定一個標識符是否已經使用 #define 定義過。

宏定義

define,宏定義,C語言中預處理命令一種。分爲無參宏定義和帶參宏定義。

無參宏定義的一般形式爲:#define 宏名 字符串
帶參宏定義的一般形式爲:#define 宏名(參數表) 字符串

無參宏定義

C語言中無參宏定義的一般形式爲:#define 宏名 字符串

  • 使用#undef 宏名取消已定義的宏
#define MESSAGE "Hello World!"
printf("%s\n",MESSAGE);
#undef MESSAGE 
  • 如果MESSAGE沒有定義,則定義MESSAGE爲10000
#ifndef MESSAGE
   #define MESSAGE 10000
#endif
printf("%d\n",MESSAGE);

帶參宏定義

帶參宏定義的一般形式爲:#define 宏名(形參表)字符串

  • 如果MESSAGE沒有定義,執行語句1;否則,執行語句2
#define MAX(a,b) a>b?a:b

#if !defined(MESSAGE)
	#define MESSAGE 10000
#else
	printf("%d\n",MAX(1,10));
#endif
  • 如果if判斷爲真,則執行語句
bool flag=true;
#define PRINT(section) if(flag){\
    printf("%s\n",section);\
}
PRINT("hello world!");
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章