g++和clang++支持c++11

mac上用clang++或者g++编译c++11的文件时,老是报错或警告.

test.cpp

1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <vector>

int main() {
std::vector<int> nums{1,2,3};
for(int num : nums) {
std::cout << num << std::endl;
}
return 0;
}

例如我们编译test.cpp这个文件时

使用clang++编译,

1
clang++ test.cpp

我们会发现编译错误,因为默认的不支持c++11这样进行列表初始化。

如果我们想成功编译需要这样

1
clang++ -std=c++11 test.cpp

g++也是一样

1
g++ -std=c++11 test.cpp -o test

每次都写-std=c++11比较麻烦,我们可以考虑使用别名。 如果你终端使用的是bash,你需要在.bashrc中添加

1
2
alias clang++='clang++ -std=c++11'
alias g++='g++ -std=c++11'

最后

1
source ~/.bashrc

zsh中同理在.zshrc中添加以上两句,在source即可。