我們學習宏定義的第一個概念是,宏定義作為替換作用。
例如:
#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
背后其實一般這樣實現的。
還有很多用處,此文待續~~