ERROR: <bits/stdc++.h>, 'cstdalign' file not found, running C++17
2022/8/29 14:22:59
本文主要是介绍ERROR: <bits/stdc++.h>, 'cstdalign' file not found, running C++17,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Modified 1 year, 1 month ago Viewed 9k times 4
I'm trying to run a piece of code in Visual Studio Code, on macOS Catalina. The 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; }
When I try to run the code using the coderunner extension, I get the error:
[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
Apparently this is an error only for C++11, then why am I getting this error? I have the latest updated Xcode version and the latest stable build of VSCode too.
EDITED AND ADDED LATER
Also, I would like to add that I manually added the bits/stdc++.h
file, and that it wasn't there from before.
Also, when I change g++ -std=c++17
to just g++
when running, the program runs and shows the correct output. With a warning as shown below.helloworld.cpp:13:15: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
Is there an issue with the default C++ version in mt laptop? Please help!
c++xcodec++11visual-studio-codec++17 se-share-sheet#willShow s-popover:shown->se-share-sheet#didShow" data-controller="se-share-sheet s-popover" data-gps-track="post.click({ item: 2, priv: 0, post_type: 1 })" data-s-popover-placement="bottom-start" data-se-share-sheet-license-name="CC BY-SA 4.0" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" data-se-share-sheet-location="1" data-se-share-sheet-post-type="question" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-subtitle="" data-se-share-sheet-title="Share a link to this question" title="Short permalink to this question" href="https://stackoverflow.com/q/62876806" rel="external nofollow" target="_blank">Share Improve this question edited Jul 14, 2020 at 0:44 asked Jul 13, 2020 at 13:23 Shravan 7511 silver badge77 bronze badges5 Answers
4#include<bits/stdc++.h>
is an internal header for the GCC and you are not supposed to use it, it's not portable.
remvoe the #include<bits/stdc++.h>
insted write #include<vector>
and #include<iostream>
also remove using namespace std it considered bad practice so you code shod look like this:
#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; }se-share-sheet#willShow s-popover:shown->se-share-sheet#didShow" data-controller="se-share-sheet s-popover" data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })" data-s-popover-placement="bottom-start" data-se-share-sheet-license-name="CC BY-SA 4.0" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" data-se-share-sheet-location="2" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-subtitle="" data-se-share-sheet-title="Share a link to this answer" title="Short permalink to this answer" href="https://stackoverflow.com/a/62876931" rel="external nofollow" target="_blank">Share Improve this answer edited May 19, 2021 at 13:14 answered Jul 13, 2020 at 13:31 yaodav 1,05688 silver badges2626 bronze badges
- 2 Yes, I realise that does work. But I was wondering why the error I indicated when we use <bits/stdc++.h> was coming. Any idea? – Shravan Jul 13, 2020 at 13:37
- 1 <bits/stdc++.h> is internal header could be that part of the header files its including are not in the macOS c++lib is also indecate that from the error message - he cant find "#include <cstdalign>" – yaodav Jul 13, 2020 at 13:40
- I've added some more info, if that helps! – Shravan Jul 14, 2020 at 0:46
- According to what version of g++ you have 4.2.1 I don't think it supports c++ 11 try updating your gcc version. – yaodav Jul 14, 2020 at 5:59
- solved the issue, and subsequent issue comes again, so I continue comment out the error line. It worked! – Jackson Feb 3 at 10:37
I was having the same issue. First I installed gcc via homebrew
brew install gcc
To avoid conflict with the existing gcc (and g++) binaries, homebrew names the binary suffixed with version. At time of this comment, the latest was gcc-10.
You dont have to copy the bits/stdc++.h
after this. Just compile using g++-<major-version-number>
instead of g++
, which would use the homebrew installed binary instead of the default osx one. For me it is
g++-10 -Wall -O2 -std=c++11 test.cpp -o test
To check the binary name that homebrew installed you can look in the /usr/local/bin
directory because thats where homebrew installs packages.
Also, make sure that usr/local/bin
is before /usr/bin
in your $PATH
-
1
Also, I am not disagreeing with the other comments saying that we should not use
bits/stdc++.h
andusing namespace std;
in our code. I put this here, because its good to know how to make it work if we have to use it. – Himanshu Tanwar Sep 14, 2020 at 17:47
For me it worked to comment the following lines out in the file bits/stdc++.h
:
// #include <cstdalign> ... // #include <cuchar>
The file is located in /usr/local/include/bits/
as well as in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/bits
. I don't know if you have to do it in both files but the first one worked for me!
Update Dec 24: If you use the g++ with the command line, there is no need to move any file into any directory!
For example when I use the command: g++ custom_file.cpp
it works fine! In addition you can add -std=c++11
to have the most needed functions. Also I don't have to move the bits/stdc++.h
file after Xcode get's an update.
I hope this helps!
se-share-sheet#willShow s-popover:shown->se-share-sheet#didShow" data-controller="se-share-sheet s-popover" data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })" data-s-popover-placement="bottom-start" data-se-share-sheet-license-name="CC BY-SA 4.0" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f4.0%2f" data-se-share-sheet-location="2" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter devto" data-se-share-sheet-subtitle="" data-se-share-sheet-title="Share a link to this answer" title="Short permalink to this answer" href="https://stackoverflow.com/a/64958149" rel="external nofollow" target="_blank">Share Improve this answer edited Dec 24, 2020 at 0:03 answered Nov 22, 2020 at 18:50 Chrissi 16111 silver badge66 bronze badges-
Any answer that recommends either editing or explicitly using the
bits/stdc++.h
header is, IMHO, utterly misleading. – Adrian Mole Nov 22, 2020 at 19:26 -
According to this answer MacOSX does not have the file
uchar.h
so you cannot#include <cuchar>
. Maybe you can download it e.g. from here and paste it to the right directory. I haven't tried this yet. – Chrissi Nov 22, 2020 at 22:43
I too got these error, and I solved these error by commenting out the <cstdalign>
part.
After you comment out these line it will give 2 more errors - cuchar not found
, and <memory_resources> not found
, comment both of them using " //" . It will not harm you stdc++.h file . And it will definitely work.
I am sharing steps to execute with sample code for array rotation which works with following commands
g++-10 -Wall -O2 -std=c++11 rotatearrayusingdeque.cpp
Then a.out file gets generated.
./a.out
sample code:
#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; }
Now, there will not be any error, Thanks
这篇关于ERROR: <bits/stdc++.h>, 'cstdalign' file not found, running C++17的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-04-26高性能表格工具VTable总体构成-icode9专业技术文章分享
- 2024-04-16软路由代理问题, tg 无法代理问题-icode9专业技术文章分享
- 2024-04-16程序猿用什么锅-icode9专业技术文章分享
- 2024-04-16自建 NAS 的方案-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数-icode9专业技术文章分享
- 2024-04-14ansible 在远程主机上执行脚本,并传入参数, 加上remote_src: yes 配置-icode9专业技术文章分享
- 2024-04-14ansible 检测远程主机的8080端口,如果关闭,则echo 进程已关闭-icode9专业技术文章分享
- 2024-04-14result 成功怎么写-icode9专业技术文章分享
- 2024-04-14stopped 状态设置为变量,由外部传递进来-icode9专业技术文章分享
- 2024-04-14为什么ansible执行远程脚本需要放到后台-icode9专业技术文章分享
bits/stdc++.h
on SO does not give you an almost daily hit for a similar question – rioV8 Jul 13, 2020 at 14:48g++ --version
print for you? – HolyBlackCat Jul 13, 2020 at 15:06