MSVC
, GCC (latest)
, GCC 4.3 ARM
이상을 대상으로하는 새 프로젝트를 시작합니다. 우리가 빌드 한 waf
빌드 시스템에는 컴파일러의 기능 감지가 C++11
있습니다.C++ 11 Polyfills
저는 C++11
을 대상으로하는 컴파일러의 모든 기능에 대한 사전 처리기 매크로를 가지고 있습니다 (예 : #ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS
). 따라서 컴파일러가 지원하는 다른 코드를 컴파일 할 수 있습니다. 기능을 사용할 수 설정 기능을 구현을 사용할 수없는 경우 - GCC
거의가 모든
이
는 웹 개발 polyfills에 대해 생각 날 잡았어 (심지어MSVC
11)
MSVC
는 근처에도없는 일을 지원합니다.
C++11
은 웹 개발 polyfill만큼 간단하지는 않지만 컴파일러가 지원하지 않으면 C++ 03을 사용하여 구현할 수있는 것이 무엇입니까?
내 공용 API에서 강력하게 형식화 된 열거자를 사용하려고하지만 사실상 MyClass::MyEnumerator::EnumValue
은 MyClass::EnumValue
, C++03
처럼 보일 것입니다. 거기 어쨌든 나는 같은 쉽게 C++03
에서 발생하는 것으로 얻을 수 있습니다 당신은 클래스로 enum class
을 에뮬레이션 할 수
class MyClass {
public:
#ifdef WAF_FEATURE_CXX_STRONGLY_TYPED_ENUMS
enum class MyEnumerator : unsigned int {
#else
enum MyEnumerator {
#endif
EnumValue = 0
}
void method(MyEnumerator e);
}
MyClass mc = new MyClass();
mc.method(MyClass::MyEnumerator::EnumValue) // C++11
mc.method(MyClass::EnumValue) // C++03 :(
정말 유익 –