我正在尝试在 macOS Catalina 上的 Visual Studio Code 中运行一段代码。 代码:
#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++版本有问题吗?请帮忙!
#include<bits/stdc++.h>
是 GCC 的内部标头,您不应该使用它,它不可移植。
删除
#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;
}
我也遇到了同样的问题。首先我通过 homebrew 安装了 gcc
brew install gcc
为了避免与现有的 gcc(和 g++)二进制文件发生冲突,自制程序以 version 为后缀命名二进制文件。在发表此评论时,最新的是 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
之前
我也遇到了这些错误,我通过注释掉
<cstdalign>
部分解决了这些错误。
注释掉这些行后,它会再出现 2 个错误 -
cuchar not found
和 <memory_resources> not found
,请使用“//”注释它们。它不会损害您的 stdc++.h 文件。而且一定会成功的。
对我来说,可以在文件中注释掉以下几行
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
中。
我不知道您是否必须在两个文件中都执行此操作,但第一个文件对我有用!
12 月 24 日更新: 如果您在命令行中使用 g++,则无需将任何文件移动到任何目录中!
例如,当我使用命令时:
g++ custom_file.cpp
它工作正常!
另外你可以添加-std=c++11
来拥有最需要的功能。
另外,在 Xcode 更新后,我不需要必须移动 bits/stdc++.h
文件。
我希望这有帮助!
我正在分享使用数组旋转示例代码执行的步骤,该代码适用于以下命令
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;
}
现在不会有任何错误了,谢谢