如果有一些代码我想尽可能多地使用 C++11x 扩展,但如果不支持则有一个后备。目前 OSX 版本的 GCC 和 VisualC 编译器几乎不支持 C++11x,所以我使用:
#if (defined(__APPLE__) || (defined(_WIN32)))
...fallback code without C++11x ...
#else
... code using C++11x ...
#endif
这可行,但并不是真正正确的做法,尤其是因为 MacPorts 中的 gcc 编译器确实支持 c++11x。
有#define C11X_SUPPORTED
类型宏吗?也许只有 GCC 才有?