为什么这个完全简单的代码会出错:
#include <string>
using namespace std::string_literals;
int main() {
auto s = "cat"s;
}
提供此错误:
hello.cpp:4:16: error: expected ';' at end of declaration
auto s = "cat"s;
这个编译器是否具体,因为我正在阅读官方资源,如:https://msdn.microsoft.com/en-us/library/69ze775t.aspx。
我的机器运行osx我使用终端和g ++编译:
g++ -v
吐出:
Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 8.0.0 (clang-800.0.38)
Target: x86_64-apple-darwin16.0.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
我用
编译了它g++ -o hello hello.cpp
和
g++ -std=c++11 hello.cpp -o hello
他们都显示错误。
有什么想法吗?
答案 0 :(得分:6)
您需要使用-std=c++14
。
g++ -std=c++14 hello.cpp -o hello
gcc 7.0.0 with C ++ 11:http://melpon.org/wandbox/permlink/1bqQhMueFpI8xVJq
gcc 7.0.0 with C ++ 14:http://melpon.org/wandbox/permlink/Tf23uFqatmXkSss2