在 OSX 10.9.1 上使用 g++ 编译时出错:未知类型名称'__darwin_wctype_t'
Error when compiling with g++ on OSX 10.9.1: unknown type name '__darwin_wctype_t'
当使用 g++ 从命令行在 OSX 10.9.1 上编译甚至基本代码(我附上一个 hello world 作为示例)时
#include <iostream>
int main() {std::cout << "Hello World";}
我使用以下命令编译:
g++ hello.cc -o hw
这将生成以下错误消息:
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ios:215:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iosfwd:90:
In file included from /usr/include/wchar.h:92:
In file included from /usr/include/_wctype.h:47:
/usr/include/_types/_wctype_t.h:31:9: error: unknown type name
'__darwin_wctype_t'
typedef __darwin_wctype_t wctype_t;
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/string:433:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cwchar:107:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/cwctype:55:
In file included from /usr/include/wctype.h:36:
/usr/include/_types/_wctrans_t.h:31:9: error: unknown type name
'__darwin_wctrans_t'
typedef __darwin_wctrans_t wctrans_t;
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:15:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/string:729:26: error:
use of undeclared identifier '__DARWIN_WEOF'
{return int_type(WEOF);}
^
/usr/include/_wctype.h:50:16: note: expanded from macro 'WEOF'
#define WEOF __DARWIN_WEOF
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__locale:18:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/mutex:176:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/__mutex_base:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/chrono:266:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:55:9: error:
no member named 'clock_t' in the global namespace
using ::clock_t;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:59:9: error:
no member named 'clock' in the global namespace
using ::clock;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:60:9: error:
no member named 'difftime' in the global namespace
using ::difftime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:61:9: error:
no member named 'mktime' in the global namespace
using ::mktime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:62:9: error:
no member named 'time' in the global namespace
using ::time;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:63:9: error:
no member named 'asctime' in the global namespace
using ::asctime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:64:9: error:
no member named 'ctime' in the global namespace
using ::ctime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:65:9: error:
no member named 'gmtime' in the global namespace
using ::gmtime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:66:9: error:
no member named 'localtime' in the global namespace
using ::localtime;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ctime:67:9: error:
no member named 'strftime' in the global namespace
using ::strftime;
~~^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:192:
In file included from /usr/include/nl_types.h:94:
/usr/include/_types/_nl_item.h:31:9: error: unknown type name '__darwin_nl_item'
typedef __darwin_nl_item nl_item;
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:2600:27: error:
member access into incomplete type 'tm'
__get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
^
/usr/include/wchar.h:131:19: note: forward declaration of 'tm'
const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:2612:25: error:
member access into incomplete type 'tm'
__get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
^
/usr/include/wchar.h:131:19: note: forward declaration of 'tm'
const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:2624:20: error:
member access into incomplete type 'tm'
__get_year(__tm->tm_year, __b, __e, __err, __ct);
^
/usr/include/wchar.h:131:19: note: forward declaration of 'tm'
const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:2641:31: error:
member access into incomplete type 'tm'
__get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
^
/usr/include/wchar.h:131:19: note: forward declaration of 'tm'
const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
^
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/ostream:132:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/c++/v1/locale:2646:29: error:
member access into incomplete type 'tm'
__get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
^
/usr/include/wchar.h:131:19: note: forward declaration of 'tm'
const struct tm * __restrict) __DARWIN_ALIAS(wcsftime);
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
我很欣赏任何人能够对此提供的任何启发。我辛勤的谷歌搜索都没有发现任何东西。
添加
这样的-I /usr/include
后,您能否再试一次
g++ hello.cc -o hw -I /usr/include
我在电脑OSX 10.10.3
(优胜美地)上做了测试,并发现了更多的东西。
1) 在我的操作系统上使用命令编译时:
g++ hello.cc -o hw
没有错误消息。
2)经过几次体验,我找到了一种方法来重现相同的错误输出。命令如下,
g++ hello.cc -o hw -I /usr/include/sys
输出带有如下错误消息,
In file included from hello.cc:1:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:215:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iosfwd:90:
In file included from /usr/include/wchar.h:92:
In file included from /usr/include/_wctype.h:47:
/usr/include/_types/_wctype_t.h:31:9: error: unknown type name '__darwin_wctype_t'
typedef __darwin_wctype_t wctype_t;
3) 此外,您还可以找到有关使用命令进行编译的更多详细信息:
g++ hello.cc -o hw -v
然后,您可以检查输出中包含的头文件,如下所示
Apple LLVM version 6.1.0 (clang-602.0.53) (based on LLVM 3.6.0svn)
Target: x86_64-apple-darwin14.3.0
Thread model: posix
//......
ignoring nonexistent directory "/usr/include/c++/v1"
ignoring nonexistent directory "/usr/local/include"
#include "..." search starts here:
#include <...> search starts here:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.1.0/include
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include
/usr/include
/System/Library/Frameworks (framework directory)
/Library/Frameworks (framework directory)
End of search list.
我刚刚在带有 clang++ 10.9 的 MacOS 3.9 上收到类似的错误消息,所以我偶然发现了这个问题。
事实证明,我忘记在头文件中关闭命名空间声明的大括号,它恰好包含在 <iostream>
之前。使用我的设置,以下代码重现了该问题:
namespace detail {
#include <iostream>
这显然不是OP的问题,但我希望这将帮助其他人。
相关文章:
- OpenCV C++:当垫子类型未知时无法访问垫子元素?
- 参数数据类型未知的可变参数函数
- 矢量迭代器类型未知
- 模板函数的返回类型未知,使用 decltype 时代码重复
- 使用不同类型 /未知类型的类模板初始化向量
- 当类型未知时调用模板方法
- 当类类型未知时,指向非静态成员函数的函数指针
- 如何在数据类型未知的C++中创建模板类
- 组件 X 的超类型未知,其某些属性未经验证
- 当数据类型未知时如何声明数组
- 如何在对象类型未知时实现交换函数
- 类成员是类型未知的派生对象
- 模板中的返回类型未知
- 在运行时之前调用类型未知的模板化函数
- 当类类型未知时调用成员函数
- 在编译时使用类型未知的对象初始化
- 处理运行时类型未知的模板
- 模板类的返回类型未知
- 当编译时数据格式和类型未知时,C++将数据读入内存
- 属性类型未知的模板类中的默认构造函数