我有一个使用CodeLite在Windows 8.1上使用MinGW32成功构建的项目。我正在尝试将编译器从MinGW32更改为clang。但是,切换编译器后,出现以下错误:
c:/MinGW/lib/gcc/mingw32/4.8.1/include/c++\bits/stringfwd.h:74:33: error: use of undeclared identifier 'char16_t'
Run Code Online (Sandbox Code Playgroud)
...之后还有许多其他类似的性质 因此,我尝试制作一个更简单的程序来检查该程序是否仅在我的代码中,并且对MinGW32感到“幸运”。
以下程序也表现出相同的错误:
#include <iostream>
int main(int argc, char **argv)
{
std::cout << "Hello World" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在CodeLite中,设置了以下编译器选项(在编译器之间未更改):
-g;-O0;-Wall;-std=c++11
Run Code Online (Sandbox Code Playgroud)
Enable C++11 Standard (clang)为了确保安全,我也尝试在工作区级别选中该复选框。
在互联网上搜索后,我发现了以下问题:
结果,我尝试添加-fno-ms-compatibility到编译器选项中。由于编译器错误更改为:
c:/MinGW/lib/gcc/mingw32/4.8.1/include/c++\bits/char_traits.h:391:7: error: cannot mangle this built-in char16_t type yet
我也尝试使用流行的搜索引擎来找到解决方案,但我所能找到的只是在名为MicrosoftMangle.cpp的文件中对它的引用。这是提到我遇到的错误的部分:
void MicrosoftCXXNameMangler::mangleType(const BuiltinType *T,
SourceRange Range) {
// <type> ::= <builtin-type>
// <builtin-type> ::= X # void
// ::= C # signed char
// ::= D # …Run Code Online (Sandbox Code Playgroud)