__if_exists 語(yǔ)句
__if_exists 語(yǔ)句測(cè)試指定的標(biāo)識(shí)符是否存在。如果該標(biāo)識(shí)符存在,則執(zhí)行指定的語(yǔ)句塊。
語(yǔ)法
__if_exists ( identifier ) { statements};
參數(shù)
參數(shù) | 說(shuō)明 |
---|---|
identifier | 要測(cè)試其存在性的標(biāo)識(shí)符。 |
statements | identifier 存在時(shí)要執(zhí)行的一個(gè)或多個(gè)語(yǔ)句。 |
備注
若要實(shí)現(xiàn)最可靠的結(jié)果,請(qǐng)?jiān)谝韵录s束條件下使用 __if_exists 語(yǔ)句。
只將 __if_exists 語(yǔ)句應(yīng)用于簡(jiǎn)單類型,而不是模板。
將 __if_exists 語(yǔ)句應(yīng)用于類的內(nèi)部或外部的標(biāo)識(shí)符。請(qǐng)勿將 __if_exists 語(yǔ)句應(yīng)用于局部變量。
請(qǐng)僅在函數(shù)的主體中使用該 __if_exists 語(yǔ)句。在函數(shù)主體外部,__if_exists 語(yǔ)句僅能測(cè)試完全定義的類型。
在測(cè)試重載函數(shù)時(shí),不能測(cè)試特定形式的重載。
__if_exists 語(yǔ)句的補(bǔ)集是 __if_not_exists 語(yǔ)句。
請(qǐng)注意,此示例使用了模板,不建議這樣做。
// the__if_exists_statement.cpp// compile with: /EHsc#include <iostream>template<typename T>class X : public T {public: void Dump() { std::cout << "In X<T>::Dump()" << std::endl; __if_exists(T::Dump) { T::Dump(); } __if_not_exists(T::Dump) { std::cout << "T::Dump does not exist" << std::endl; } } };class A {public: void Dump() { std::cout << "In A::Dump()" << std::endl; }};class B {};bool g_bFlag = true;class C {public: void f(int); void f(double);};int main() { X<A> x1; X<B> x2; x1.Dump(); x2.Dump(); __if_exists(::g_bFlag) { std::cout << "g_bFlag = " << g_bFlag << std::endl; } __if_exists(C::f) { std::cout << "C::f exists" << std::endl; } return 0;}
Output
In X<T>::Dump()In A::Dump()In X<T>::Dump()T::Dump does not existg_bFlag = 1C::f exists
__if_not_exists 語(yǔ)句
__if_not_exists 語(yǔ)句測(cè)試指定的標(biāo)識(shí)符是否存在。如果該標(biāo)識(shí)符不存在,則執(zhí)行指定的語(yǔ)句塊。
語(yǔ)法
__if_not_exists ( identifier ) { statements};
參數(shù)
參數(shù) | 說(shuō)明 |
---|---|
identifier | 要測(cè)試其存在性的標(biāo)識(shí)符。 |
statements | identifier 不存在時(shí)要執(zhí)行的一個(gè)或多個(gè)語(yǔ)句。 |
備注
若要實(shí)現(xiàn)最可靠的結(jié)果,請(qǐng)?jiān)谝韵录s束條件下使用 __if_not_exists 語(yǔ)句。
只將 __if_not_exists 語(yǔ)句應(yīng)用于簡(jiǎn)單類型而不是模板。
將 __if_not_exists 語(yǔ)句應(yīng)用于類的內(nèi)部或外部的標(biāo)識(shí)符。不要將 __if_not_exists 語(yǔ)句應(yīng)用于局部變量。
僅在函數(shù)的主體中使用 __if_not_exists 語(yǔ)句。在函數(shù)主體的外部,__if_not_exists 語(yǔ)句僅能測(cè)試完全定義的類型。
在測(cè)試重載函數(shù)時(shí),不能測(cè)試特定形式的重載。
__if_not_exists 語(yǔ)句的補(bǔ)集為 __if_exists 語(yǔ)句。