我的笔记本电脑从昨天起就无法编译一个简单的c ++代码,之前它完全正常。
c ++代码可以是main.cpp文件中的hello-world代码。
#include <iostream>
using namespace std;
int main(int argc, char** argv)
{
cout<<"Hello World"<<endl;
return 0;
}
我正在尝试按
编译代码icpc main.cpp
错误信息是
在/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / algorithm(637)中包含的文件中, 来自/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / __ string(56), 来自/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / string_view(171), 来自/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / string(470), from / Library / Developer / CommandLineTools / usr / include / c ++ / v1 / __ locale(15), 来自/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / ios(216), 来自/ Library / Developer / CommandLineTools / usr / include / c ++ / v1 / iostream(38), 来自main.cpp(1): / Library / Developer / CommandLineTools / usr / include / c ++ / v1 / type_traits(2065):错误:预期的标识符 :public decltype((_ VSTD :: __ is_assignable_test&lt; _Tp,_Arg&gt;(0))){};
编译中止了main.cpp(代码2)
一些信息:
我使用的是icpc(ICC)17.0.4 20170411,它是从英特尔®ParallelStudio XE Composer Edition for C ++ macOS安装的。
我的Mac是MacBook Pro(15英寸,2017年),版本10.12.6。
如果我使用gnu编译器,它可以正常工作。虽然我的代码需要使用intel的编译器。
代码以前工作,不知道它变成了这个。我已经尝试重新启动系统。
=============================================== =======================
Update1 :更新“Xcode命令行工具”后发生问题。看起来/Library/Developer/CommandLineTools/usr/include/c++/
不正确。
=============================================== =======================
Update2 :可以使用icpc -std=c++11 main.cpp
然而,当我将main.cpp更改为
时#include <iostream>
#include <vector>
#include <tuple>
using namespace std;
tuple<vector<int>, vector<int>, vector<int>>
getAllBlockMeanErrorTuple(const vector<int> &vec)
{
vector<int> fact, mean, err;
fact.resize( vec.size() );
mean.resize( vec.size() );
err.resize( vec.size() );
return make_tuple(fact, mean, err);
}
int main(int argc, char** argv)
{
cout<<"Hello World"<<endl;
return 0;
}
即使我使用icpc -std=c++11 main.cpp
/Library/Developer/CommandLineTools/usr/include/c++/v1/__tuple(401): error: type name is not allowed
-> __all<typename enable_if<_Trait<_LArgs, _RArgs>::value, bool>::type{true}...>;
detected during:
答案 0 :(得分:2)
我在将命令行工具升级到2017年9月的版本时遇到了同样的问题
虽然没有找到合适的解决方案,但我重新安装了以前版本(2017年4月)的命令行工具,它解决了问题(https://developer.apple.com/download/more/#)。
我期待有一个干净的解决方案。
编辑(5/12/17):
我通过使用gcc重新编译所有内容解决了这个问题。在编译时,英特尔编译器将使用在路径中响应gcc
和g++
的编译器。在/usr/local/bin
中使用自制程序和一些符号链接的安装会将新安装的gcc
推送到clang前面,然后避免在每次系统更新时更改gcc。希望它有所帮助。
答案 1 :(得分:0)
尝试检查您是否使用了正确的设置 GNU正在运行,因为它自动设置为C ++ 尝试将编译器设置为c ++ 希望这有效。 或者您可以使用xcode编写c ++代码。