chrono_literals不是名称空间名称

use*_*824 7 c++ gcc

我正在尝试构建一个名为darkstar的程序,一个私有的FFXI服务器.我试图在FreeBSD 10.2稳定版本上构建它.我正在从端口使用GCC 5.3来尝试构建它.

使用这个使CC = gcc5 CXX = g ++ 5 CPP ="gcc5 -E"来调用正确版本的GCC/G ++.

这是我被踢出的错误代码.

src/common/../common/../common/cbasetypes.h:336:22: error: 'chrono_literals'         is not a namespace-name
  using namespace std::chrono_literals;
                  ^
src/common/../common/../common/cbasetypes.h:336:37: error: expected namespace-name before ';' token
  using namespace std::chrono_literals;
Run Code Online (Sandbox Code Playgroud)

我已经检查过以确保chrono实际上位于/ usr/include/c ++/v1/chrono的正确位置.

在抛出错误的地方,这是来自cbasetypes.h中的第336行以及之后的几行的代码.

#include <chrono>

using namespace std::chrono_literals;
using server_clock = std::chrono::steady_clock;
using time_point = server_clock::time_point;
using duration = server_clock::duration;
Run Code Online (Sandbox Code Playgroud)

不知道如何解决这个错误,虽然我认为这个社区将是一个很好的起点.

先感谢您!

Tob*_*ght 11

你拼错了std::literals::chrono_literals.

请记住确保您根据C++ 14编译源代码(C++ 11中未提供计时文字).

  • 为了记录,你应该能够只使用`std :: chrono_literals`,只要你从C++ 14编译:"这些运算符在命名空间`std :: literals :: chrono_literals`中声明, `literals`和`chrono_literals`是内联命名空间.**使用命名空间std :: literals`,**`using namespace std :: chrono_literals`**和`using namespace std'可以获得对这些操作符的访问. ::文字:: chrono_literals`".(强调我的)https://en.cppreference.com/w/cpp/chrono/operator%22%22h (8认同)

小智 7

这对我有用:

using namespace std::literals::chrono_literals;
Run Code Online (Sandbox Code Playgroud)

并将其添加到CMakeLists.txt

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
Run Code Online (Sandbox Code Playgroud)