alignas报错 ISO C++ forbids declaration of ‘alignas’ with no type [-fpermissive]

原因,alignas是c++11才支持的。建议

在编译选项中加  -std=c++0x –Wall  或者  -std=c++11

g++ test.cpp -o test.out -std=c++0x -Wall

最后那个是编译警告,初学打开比较好

gcc目前需要添加-std=c++0x 才能顺利编译c++11新特性

 

或者用alias 

对当前系统下次重启前 临时生效:

alias g++=’g++ -std=c++0x’

 

或者想让它永久生效,则写入/etc/bashrc 文件中

vim /etc/bashrc

alias g++=’g++ -std=c++0x –Wall’


或者你的g++不支持c++11建议升级g++。具体怎么升级不同操作系统不一样。

具体哪些编译器版本支持c++11 我大致整理了一下

0       GCC 4.7
1       GCC 4.7 (C++11)
2       GCC 4.8
3       GCC 4.8 (C++11)
4       GCC 4.9
5       GCC 4.9 (C++11)
6       GCC 4.9 (C++14)
7       GCC 5.2 (C++98)
8       GCC 5.2 (C++11)
9       GCC 5.2 (C++14)
10       GCC 5.2 (C++17)
11       GCC 7.1 (C++98)
12       GCC 7.1 (C++11)
13       GCC 7.1 (C++14)
14       GCC 7.1 (C++17)
15       GCC 7.1 (C++17 + Concepts TS + TM TS + Filesystem TS)
16       clang 3.8
17       clang 3.8 (C++11)
18       clang 3.8 (C++14)
19       clang 3.8 (C++17)

猜你喜欢

转载自blog.csdn.net/u014283248/article/details/79777149
今日推荐