[英]What are the C++ 03 Macros?
我正在嘗試使用-std=c++03
編譯庫,但是編譯失敗,因為nullptr_t
。
如何使用硬編碼宏保證C ++ 03而不是C ++ 11編譯?
提前致謝。
存在於標准的唯一版本檢測是宏的值__cplusplus
: 201103
為C ++ 11(ISO / IEC 14882-2011§16.8/ 1)和199711
對C ++ 98(ISO / IEC 14882-1998§16.8 / 1)。 C ++ 03顯然不值得擁有自己的編號,並且也使用199711
(ISO / IEC 14882-2003§16.8/ 1)。 如果您覺得這不足以進行特征檢測, 那么您並不孤單 。
無論如何,您甚至可能需要查閱相關庫的文檔,以確定如何針對C ++ 11之前的版本配置它。
不幸的是,我不知道任何適用於所有編譯器的宏。 對於g ++和clang,有一個名為__GXX_EXPERIMENTAL_CXX0X__
的宏,僅在c ++ 11中定義,因此您可以執行
#ifndef __GXX_EXPERIMENTAL_CXX0X__
// Do some c++03 specific code
#endif
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.