我遇到了一个非常奇怪的错误,只有在我使用 ansi
标志时才会弹出。
#include <memory>
class Test
{
public:
explicit Test(std::shared_ptr<double> ptr) {}
};
这是编译,使用 gcc 4.5.2 和 4.6.0 (20101127) 测试:
g++ -std=c++0x -Wall -pedantic -ansi test.cpp
test.cpp:6:34: error: expected ')' before '<' token
但是不用 -ansi
编译也可以。为什么?
最佳答案
对于 GNU C++ 编译器,-ansi
是 -std=c++98
的另一个名称,它覆盖了 -std=c++0x
你之前在命令行上。你可能只想
$ g++ -std=c++0x -Wall minimal.cpp
(-pedantic
在 C++ 中默认开启,所以没必要再说一遍。如果你想要更挑剔的警告,试试添加 -Wextra
。)
关于c++ - 如果包含 "-ansi"编译器选项,为什么我的 C++0x 代码无法编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5861729/