窗口中的 Clang++ 4.0.0 编译错误
Clang++ 4.0.0 compilation error in windows
我正在使用从Windows 10(32位操作系统,x86处理器)上的源代码编译的clang 4.0.0。我正在尝试将我的 cpp 代码编译为格式为 ll 的 llvm ir 代码。下面是一个无法使用 clang 编译的示例代码:
#include <windows.h>
#include <tlhelp32.h>
#include <fstream>
#include <mapi.h>
#include <memory>
#include<stdio.h>
/* Function to calculate x raised to the power y */
int power(int x, unsigned int y)
{
if (y == 0)
return 1;
else if (y%2 == 0)
return power(x, y/2)*power(x, y/2);
else
return x*power(x, y/2)*power(x, y/2);
}
/* Program to test function power */
int main()
{
int x = 2;
unsigned int y = 3;
printf("%d", power(x, y));
return 0;
}
这只是一个示例代码,但它在所有包含所列头文件的 C++ 代码中的行为相同。我使用以下命令将其编译为 llvm ir 代码:
clang++ -S -emit-llvm assiral.cpp -o assiral.ll
在编译时,我收到以下错误:
C:Sample>clang++ -emit-llvm -S assiral.cpp -o assiral.ll
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includecmath:617:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includextgmath.h:9:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includextr1common:204:22: error:
use of undeclared identifier 'char16_t'
struct _Is_integral<char16_t>
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includextr1common:210:22: error:
use of undeclared identifier 'char32_t'
struct _Is_integral<char32_t>
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeexception:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includetype_traits:6:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstddef:257:2: error: 'auto'
return without trailing return type; deduced return types are a C++14 extension
auto _Unfancy(_Ptrty _Ptr)
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexmemory0:8:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includelimits:612:33: error: use of
undeclared identifier 'char16_t'
template<> class numeric_limits<char16_t>
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includelimits:902:33: error: use of
undeclared identifier 'char32_t'
template<> class numeric_limits<char32_t>
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexmemory0:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexutility:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeutility:7:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeiosfwd:254:21: error: use of
undeclared identifier 'char16_t'
struct char_traits<char16_t>
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeiosfwd:263:21: error: use of
undeclared identifier 'char32_t'
struct char_traits<char32_t>
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexmemory0:10:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexutility:698:2: error:
'auto' return without trailing return type; deduced return types are a C++14 extension
auto _Unchecked_n(_Iter _Src, _Diff)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexutility:742:2: error:
'auto' return without trailing return type; deduced return types are a C++14 extension
auto _Unchecked_n_backward(_Iter _Src, _Diff)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexutility:1142:12: error:
deduced return types are a C++14 extension
constexpr decltype(auto) _Operator_arrow(_Iterator&& _Target, false_type)
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:7:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:6:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexmemory0:356:2: error:
'auto' return without trailing return type; deduced return types are a C++14 extension
auto _Const_cast(_Ptrty _Ptr)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexmemory0:366:2: error:
'auto' return without trailing return type; deduced return types are a C++14 extension
auto _Const_cast(_Ty * _Ptr)
^
In file included from assiral.cpp:3:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includefstream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includem:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeostream:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includeios:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocnum:10:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestreambuf:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexiosbase:6:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexlocale:8:
In file included from C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includestdexcept:7:
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:75:2: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Start_at; ; ++_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:119:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - _Needle_size); ; --_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:144:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - 1); ; --_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:169:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:188:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Min_value(_Start_at, _Hay_size - 1); ; --_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:213:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try)
^
C:Program FilesMicrosoft Visual Studio2017EnterpriseVCToolsMSVC14.11.25503includexstring:233:3: error:
statement not allowed in constexpr function
for (auto _Match_try = _Haystack + _Start_at; _Match_try < _End; ++_Match_try)
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
运行命令后,我期望的是生成字节码文件(.ll 文件)。我看过很多帖子,他们引入了一个标志:"-fms-compatibility -version=19"以及命令。但是,添加的标志被标记为未知参数。我正在使用 MSVS 2017。也许我用错了这个标志。但是我已经在这个僵局中呆了一天了。任何帮助或建议将不胜感激。
此问题已通过在环境变量 INCLUDE 中的头文件中添加正确的路径来修复。修复路径后,我的大部分错误都得到了解决。这包括编译引用某些标头(如 windows.h)的 c++ 文件时找不到文件的错误。
关于如何做同样操作的链接:从命令行列出所有环境变量?
您还可以修复另一个问题:
link fatal error lnk1104 cannot open file 'libcmt.lib'
通过将 LIBPATH 环境变量设置为指向 libcmt.lib 文件的正确位置。我在以下位置找到了我的:
C:Program FilesMicrosoft Visual Studio 14.0VClib
这些琐碎的问题让我花了好几天的时间去弄清楚。希望这能为某人省去同样的麻烦。
相关文章:
- std::is_base_of表示ctor编译错误
- Qt5:使用QCommandLineParser类时出现奇怪的编译错误
- 如何修复sfml c++代码编译错误
- 使用 MATLAB 编码器生成C++代码:编译错误"undefined reference to `rgb2gray_tbb_real64'"
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vscode下的Arduino代码出现意外编译错误
- 第三方 API 中的编译错误 - Visual Studio
- std::cout输出int时出现编译错误
- 奇怪的代码抛出编译错误模板< J,int aSize=10> C2143:语法错误:在"<"之前缺少";"
- 提升图广度优先搜索前置编译错误
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 使用带有 ref 参数的成员函数创建线程时出现编译错误
- 我在C++中遇到了这个奇怪的编译错误
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- 使用 std::enable_if 限制派生类的模板参数时出现编译错误
- 现代OpenGL和GLEW Libraray的编译错误
- C++ 编译错误:意外的类型名称"字符串":预期的表达式
- C ++程序编译错误,找不到/访问文件
- 使用直接大括号初始化时,C++ 编译错误"声明末尾的预期";"
- 为什么传递非静态成员函数会导致编译错误?