'std :: get_time'尚未声明

时间:2017-09-27 20:23:02

标签: c++ c++11 datetime gcc time

我使用get_time()和mtkime()将我的DateTime类的对象的值转换为unix时间戳,以便我可以轻松地比较我的DateTime类的两个实例。这是我生成时间戳的代码

void DateTime :: setTimeStamp()

stringstream date_ss1;
date_ss1 << (*this);
istringstream date_iss(date_ss1.str());
struct tm date;
date_iss >> get_time( &date, "%Y/%m/%d-%H:%M" );
timestamp = mktime( &date );

此代码在我的Mac上编译并完美运行。 但是在远程服务器上编译它时,它是唯一的错误。

DateTime.h:40:12: error: ‘std::get_time’ has not been declared
 using std::get_time;

如果信息有帮助,服务器的编译器在查找mtkime方面没有问题。

我的Mac编译器版本

  

配置:   --prefix = / Applications / Xcode.app / Contents / Developer / usr --with-gxx-include-dir = / usr / include / c ++ / 4.2.1 Apple LLVM 9.0.0版(clang-900.0.37)目标:x86_64-apple-darwin16.7.0线程模型:posix   InstalledDir:   /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

服务器GNU编译器版本

  

gcc(GCC)5.3.1 20160406(Red Hat 5.3.1-6)

我通过运行

在我的Mac和远程服务器上获得了编译器的版本
gcc --version

DateTime.h

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <sstream>
#include <ctime>
#include <exception>    

using std::ostream;
using std::istream;
using std::string;
using std::setfill;
using std::setw;
using std::endl;
using std::stringstream;
using std::istringstream;
using std::cout;
using std::invalid_argument;
using std::exit;
using std::get_time;

/*code*/

1 个答案:

答案 0 :(得分:0)

通过在编译调用中添加“-std = c ++ 11”,我能够在服务器上成功编译代码。这有效:

g++ -std=c++11 DateTime.cpp