在源文件中忘朝,用宏變量控制代碼的條件編譯呵哨,有如下四個編譯控制語句:
#if
#if defined
#ifndef
#ifdef
四個常見編譯控制的區(qū)別择同,聯(lián)系两入,及用法:
#ifdef 與 #if defined() 是等價的。 適用于判斷單個宏是否定義敲才。
#if defined() 可以構(gòu)成復(fù)雜的邏輯判斷谆刨。
例如
#if defined(TEST1) || defined(TEST2)
xxxxxx
#endif
#if defined(AAA) && VERSION > 3
xxxxx
#endif
#if 后面跟條件表達式, 為真归斤,執(zhí)行編譯,為假刁岸,不編譯脏里。
#if defined() 就是#if 的一種用法。
#ifndef ?和 #if !defined() 等價虹曙,用來判斷單個宏是否未定義
例如:
#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)先級最高
#endif