c ++中的S后缀字符串文字给出了错误

时间:2016-12-10 22:29:14

标签: c++

为什么这个完全简单的代码会出错:

#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

他们都显示错误。

有什么想法吗?

1 个答案:

答案 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