我使用wxwidget库,我有以下问题:
#if defined(HAVE_TYPE_TRAITS) #include <type_traits> #elif defined(HAVE_TR1_TYPE_TRAITS) #ifdef __VISUALC__ #include <type_traits> #else #include <tr1/type_traits> #endif #endif
这里找不到#include.我使用Apple LLVM编译器4.1. (用c 11方言).
如果我切换到LLVM GCC 4.2编译器,我没有错误,但主要问题是所有c 11包含都不起作用.
我如何使用GCC编译器,但使用c 11标准或使LLVM可以找到?
任何帮助将非常感激.
解决方法
我猜你有“C标准库”设置为“libc”.如果是这种情况,您需要< type_traits>,而不是< tr1 / type_traits>. libc为您提供了一个C 11库,而libstdc(这也是Xcode 4.5中的默认值)为您提供了一个支持tr1的C 03库.
如果需要,您可以自动检测您正在使用的库:
#include <ciso646> // detect std::lib #ifdef _LIBCPP_VERSION // using libc++ #include <type_traits> #else // using libstdc++ #include <tr1/type_traits> #endif
或者在你的情况下:
#include <ciso646> // detect std::lib #ifdef _LIBCPP_VERSION // using libc++ #define HAVE_TYPE_TRAITS #else // using libstdc++ #define HAVE_TR1_TYPE_TRAITS #endif