chrono_literals不是命名空间名称

chrono_literals is not a namespace-name

本文关键字:命名空间 literals chrono      更新时间:2023-10-16

我正在尝试构建一个名为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;

我已经检查以确保 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;

不确定该怎么做才能解决此错误,尽管我认为这个社区将是一个很好的起点。

你拼写错误std::literals::chrono_literals .

请记住确保根据 C++14 编译源(C++11 中未提供时间文本)。

这对

我有用:

using namespace std::literals::chrono_literals;

并在CMakeLists.txt中添加以下内容:

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
#include <chrono>
 
using namespace std::chrono_literals; 

可以,但您至少需要 C++14 编译标志。