原因,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)