我正在尝试在macOS Catalina上的 Visual Studio代码中运行一段代码。 代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
// Create an empty vector
vector<int> vect;
vect.push_back(10);
vect.push_back(20);
vect.push_back(30);
for (int x : vect)
cout << x << " ";
return 0;
}
当我尝试使用 coderunner扩展运行代码时,出现错误消息:
[Running] cd "/Users/VSC_Files/" && g++ -std=c++17 helloworld.cpp -o helloworld && "/Users/VSC_Files/"helloworld
In file included from helloworld.cpp:1:
/usr/local/include/bits/stdc++.h:57:10: fatal error: 'cstdalign' file not found
#include <cstdalign>
^~~~~~~~~~~
1 error generated.
[Done] exited with code=1 in 1.465 seconds
显然这仅是C ++ 11的错误,那为什么我会收到此错误?我也拥有最新的Xcode版本和VSCode的最新稳定版本。
编辑后添加
此外,我想补充一下,我手动添加了bits/stdc++.h
文件,并且该文件以前没有。
另外,当我在运行时将g++ -std=c++17
更改为g++
时,程序将运行并显示正确的输出。带有如下所示的警告。
helloworld.cpp:13:15: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
mt笔记本电脑的默认C ++版本是否存在问题?请帮忙!
答案 0 :(得分:1)
删除#include<bits/stdc++.h>
插入#include<vector>
和#include<iostream>
还要删除被认为是不良做法的using namespace std
所以你的代码看起来像这样:
#include <vector>
#include <iostream>
int main()
{
// Create an empty vector
std::vector<int> vect;
vect.push_back(10);
vect.push_back(20);
vect.push_back(30);
for (int x : vect)
std::cout << x << " ";
return 0;
}
答案 1 :(得分:0)
我遇到了同样的问题。首先,我通过自制软件安装了gcc
brew install gcc
为避免与现有的gcc(和g ++)二进制文件冲突,自制软件应在二进制文件后加上版本号。发表本文时,最新版本是gcc-10。
此后,您不必复制bits/stdc++.h
。只需使用g++-<major-version-number>
而不是g++
进行编译,这将使用本地安装的二进制文件而不是默认的osx二进制文件。对我来说是
g++-10 -Wall -O2 -std=c++11 test.cpp -o test
要检查homebrew安装的二进制名称,您可以在/usr/local/bin
目录中查找,因为那是homebrew安装软件包的位置。
还要确保usr/local/bin
中/usr/bin
位于$PATH
之前
答案 2 :(得分:0)
我正在分享使用以下命令执行数组旋转的示例代码的步骤
g++-10 -Wall -O2 -std=c++11 rotatearrayusingdeque.cpp
<块引用>然后生成一个.out 文件。
./a.out
<块引用>示例代码
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,r,i,j,temp=0,n1;
deque<int> v;
cin>>n>>r;
for(i=0;i<n;i++)
{
cin>>n1;
v.push_back(n1);
}
for(j=0;j<r;j++)
{
temp = v.front();
v.pop_front();
v.push_back(temp);
}
for(auto x:v)
{
cout<<x<<" ";
}
cout<<endl;
return 0;
}
<块引用>
现在,不会有任何错误,谢谢
答案 3 :(得分:0)
我也遇到了这些错误,我通过注释掉 <cstdalign>
部分解决了这些错误。
注释掉这些行后,它会再出现 2 个错误 - cuchar not found
和 <memory_resources> not found
,请使用 "//" 注释它们。它不会伤害你的 stdc++.h 文件。它肯定会奏效。
答案 4 :(得分:-1)
对我来说,它在文件bits/stdc++.h
中注释了以下几行:
// #include <cstdalign>
...
// #include <cuchar>
该文件位于/usr/local/include/bits/
和/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/bits
中。
我不知道您是否必须在两个文件中都这样做,但是第一个文件对我有用!