在源文件中,用宏變量控制代碼的條件編譯,有如下四個(gè)編譯控制語(yǔ)句:
#if
#if defined
#ifndef
#ifdef
四個(gè)常見(jiàn)編譯控制的區(qū)別,聯(lián)系,及用法:
#ifdef 與 #if defined() 是等價(jià)的。 適用于判斷單個(gè)宏是否定義。
#if defined() 可以構(gòu)成復(fù)雜的邏輯判斷。
例如
#if defined(TEST1) || defined(TEST2)
xxxxxx
#endif
#if defined(AAA) && VERSION > 3
xxxxx
#endif
#if 后面跟條件表達(dá)式, 為真,執(zhí)行編譯,為假,不編譯。
#if defined() 就是#if 的一種用法。
#ifndef ?和 #if !defined() 等價(jià),用來(lái)判斷單個(gè)宏是否未定義
例如:
#if !defined YA_BUILD_FOR_DEVELOP && !defined YA_BUILD_FOR_TEST && !defined YA_BUILD_FOR_RELEASE && !defined YA_BUILD_FOR_PRERELEASE
#define YA_BUILD_FOR_DEVELOP
//#define YA_BUILD_FOR_TEST
//#define YA_BUILD_FOR_PRERELEASE
//#define YA_BUILD_FOR_HOTFIX
//#define YA_BUILD_FOR_RELEASE//該環(huán)境的優(yōu)先級(jí)最高
#endif