C語言 define 定義函式(多行書寫) - C語言零基礎入門教程
阿新 • • 發佈:2021-09-05
目錄
零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門
一.define 簡介
C
語言中,除了可以用 #define
定義一個識別符號來表示一個常量,還可以用 #define
定義函式,例如:
//定義常量 #define MAX_VALUE 100 //定義整型變數MAX_VALUE值為100 #define USER_NAME "huge" //定義字串變數USER_NAME值為"huge" #define PI 3.1415926 //定義浮點數變數PI值為3.1415926 //定義簡單函式 #define MAX(a,b) (a>b)?a:b //取兩個數最大值 #define MIN(a,b) (a<b)?a:b //取兩個數最小值 //定義複雜多行的函式 #define MACRO(arg1, arg2) do { \ \ stmt1; \ stmt2; \ \ } while(0) 關鍵是要在每一個換行的時候加上一個 "\ "
凡是以 #
開頭的均為預處理指令,預處理又叫預編譯。預編譯不是編譯,而是編譯前的處理。這個操作是在正式編譯之前由系統自動完成的。
使用
define
定義一個多行的複雜函式,關鍵是要在每一個換行的時候加上一個\
;
二.define 定義多行函式
1.簡單使用
/******************************************************************************************/ //@Author:猿說程式設計 //@Blog(個人部落格地址): www.codersrc.com //@File:C語言教程 - C語言 define 定義函式(多行書寫) //@Time:2021/06/27 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! /******************************************************************************************/ #include "stdafx.h" #include <stdio.h> //單行書寫 //#define swap(x,y) do{x=x+y;y=x-y;x=x-y;}while(0) //多行書寫 #define swap1(x,y) \ do{\ x=x+y;\ y=x-y;\ x=x-y;\ }while(0) int main() { int a = 2, b = 3; printf("交換前a=%d\t,b=%d\n", a, b); swap1(a, b); printf("交換後a=%d\t,b=%d\n\n", a, b); return(0); } /* 交換前a=2 ,b=3 交換後a=3 ,b=2 */
2.經典案例
/* 需求: 1.debug模式下: a.如果定義了巨集DEBUG_TO_FILE,那麼將日誌輸出到檔案 b.如果定義了巨集DEBUG_TO_FILE,那麼將日誌輸出到控制檯 2.release模式下不列印任何日誌 */ /******************************************************************************************/ //@Author:猿說程式設計 //@Blog(個人部落格地址): www.codersrc.com //@File:C語言教程 - C語言 define 定義函式(多行書寫) //@Time:2021/06/27 08:00 //@Motto:不積跬步無以至千里,不積小流無以成江海,程式人生的精彩需要堅持不懈地積累! /******************************************************************************************/ #include <stdio.h> #include <string.h> //開啟下面的巨集表示程式執行在除錯版本, 否則為發行版本, 這裡假設只有除錯版本才輸出除錯資訊 #define _DEBUG #ifdef _DEBUG //開啟下面的巨集就把除錯資訊輸出到檔案,註釋即輸出到終端 #define DEBUG_TO_FILE #ifdef DEBUG_TO_FILE //除錯資訊輸出到以下檔案 #define DEBUG_FILE "/tmp/debugmsg" //除錯資訊的緩衝長度 #define DEBUG_BUFFER_MAX 4096 //將除錯資訊輸出到檔案中 #define printDebugMsg(moduleName, format, ...) {\ char buffer[DEBUG_BUFFER_MAX+1]={0};\ snprintf( buffer, DEBUG_BUFFER_MAX \ , "[%s] "format" File:%s, Line:%d\n", moduleName, ##__VA_ARGS__, __FILE__, __LINE__ );\ FILE* fd = fopen(DEBUG_FILE, "a");\ if ( fd != NULL ) {\ fwrite( buffer, strlen(buffer), 1, fd );\ fflush( fd );\ fclose( fd );\ }\ } #else //將除錯資訊輸出到終端 #define printDebugMsg(moduleName, format, ...) \ printf( "[%s] "format" File:%s, Line:%d\n", moduleName, ##__VA_ARGS__, __FILE__, __LINE__ ); #endif //end for #ifdef DEBUG_TO_FILE #else //發行版本,什麼也不做 #define printDebugMsg(moduleName, format, ...) #endif //end for #ifdef _DEBUG int main(int argc, char** argv) { printDebugMsg( "www.codersrc.com", "name = %s", "C語言教程" ); return 0; }
三.猜你喜歡
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
- C 語言 使用指標遍歷陣列
- C 語言 指標和陣列區別
- C 語言 指標陣列和陣列指標區別
- C 語言 空指標 NULL
- C 語言 void 指標
- C 語言 野指標
- C 語言 函式值傳遞和址傳遞
- C 語言 函式預設引數
- C 語言 函式不定長引數
- C 語言 函式指標
- C 語言 指標函式
- C 語言 回撥函式 callback
- C 語言 typedef
- C 語言 define 定義常量
- C 語言 define 防止標頭檔案重複包含
- C 語言 define 定義函式
- C 語言 define 定義函式(多行書寫)
未經允許不得轉載:猿說程式設計 » C 語言 define 定義函式(多行書寫)
本文由部落格 - 猿說程式設計 猿說程式設計 釋出!