1. 程式人生 > >空的宏定義作用及常見用法

空的宏定義作用及常見用法

pre api std span 情況 方法 debug 編譯器 常見

我們學習宏定義的第一個概念是,宏定義作為替換作用。

例如:

#define SIZE 32    // 接下來代碼使用SIZE就相當於32

宏定義是編譯器在編譯時,將程序中所有SIZE替換成32,我這裏就不詳細將宏定義的知識,

下面講講在項目中,看到空的宏定義是什麽情況以及它作用和用法。

先看看項目中的代碼, 如下:

#ifndef SQLITE_API
# define SQLITE_API
#endif

這個宏定義什麽都沒有,作用是什麽呢?

作用是標誌

#ifndef __TYPE_DEFINE__
# define __TYPE_DEFINE__
   #include <stdio.h> typedef unsigned
int uint32 ; int func(int x, int y); #endif

再看看上面這段代碼,這時防止頭文件重復的用法。空宏定義跟這個其實一樣的,僅僅只是定義的內容是空的,

但是,我們可以判斷這個宏定義是否曾經被定義過。

使用方法:

#ifdef __TYPE_DEFINE__
/* 代碼段1 */
#else
/* 代碼段2 */
#endif

在make menuconfig 啟動編譯的時候,裏面其實很多代碼是這樣預留出來的,我們通過啟動config文件的某個選項: [*] DEBUG

背後其實一般這樣實現的。

還有很多用處,此文待續~~

空的宏定義作用及常見用法