ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

ERROR: <bits/stdc++.h>, 'cstdalign' file not found, running C++17

2022-08-29 08:00:41  阅读:412  来源: 互联网

标签:std 13 sheet 17 share C++ running data se



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!

Share Improve this question   edited Jul 14, 2020 at 0:44     asked Jul 13, 2020 at 13:23 user avatar Shravan 7511 silver badge77 bronze badges Show 7 more comments

5 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; 
} 
Share Improve this answer   edited May 19, 2021 at 13:14     answered Jul 13, 2020 at 13:31 user avatar 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
Add a comment 3

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

Share Improve this answer   answered Sep 14, 2020 at 17:45 user avatar Himanshu Tanwar 36822 silver badges1616 bronze badges
  • 1 Also, I am not disagreeing with the other comments saying that we should not use bits/stdc++.h and using 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
Add a comment 1

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!

Share Improve this answer   edited Dec 24, 2020 at 0:03     answered Nov 22, 2020 at 18:50 user avatar 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 
Add a comment 1

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.

enter image description here

Share Improve this answer   edited Jul 13, 2021 at 13:17 user avatar Cristik 29.2k2424 gold badges8686 silver badges122122 bronze badges answered Jul 13, 2021 at 8:52 user avatar Archies Singh 1111 bronze badge Add a comment 0

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

标签:std,13,sheet,17,share,C++,running,data,se
来源: https://www.cnblogs.com/flyingsir/p/16634686.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有