Kann nicht kompiliert werden, mit Zeit - und Uhr-Funktionen C++
Ich ab meine erste GNU-Projekt basierend auf ein weiteres GNU-Projekt zu verbessern und ändern Sie die Implementierung.
Habe ich versucht zu implementieren, meine eigene build-Methode, aber Zeit - und Uhr-Funktionen brach meine bauen.
Gelesen habe ich eine Menge Fragen auf Stack Overflow, aber ich bin sehr verwirrt mit den drei Bibliotheken chrono
, ctime
und time.h
.
Dies ist die build-Fehler:
/src/gamed/Logger.cpp
#include "Logger.h"
#include <errno.h>
#include <string.h>
#include <stdarg.h>
#include <time.h>
const std::string Logger::CurrentDateTime()
{
time_t now = time(0);
struct tm tstruct;
char buf[80];
tstruct = *localtime(&now);
strftime(buf, sizeof(buf), "%Y-%m-%d %X", &tstruct);
return buf;
}
Fehler: time, localtime und strftime Bezeichner nicht gefunden
/src/gamed/Pakete.h
#ifndef _PACKETS_H
#define _PACKETS_H
#include <time.h>
#include <cmath>
#include <set>
{...}
class GamePacket : public BasePacket {
public:
GamePacket(uint8 cmd = 0, uint32 netId = 0) : BasePacket(cmd, netId) {
buffer << (uint32)clock();
}
};
Fehler: Uhr-Bezeichner nicht gefunden
/src/gamed/Pathfinder.cpp
#include "Logger.h"
#include "Pathfinder.h"
#include "Map.h"
#include "AIMesh.h"
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <chrono>
#include "Logger.h"
#include "Minion.h"
#include "Champion.h"
Map * Pathfinder::chart = 0;
auto g_Clock = std::clock();
Fehler: - Uhr nicht Mitglied der std
Was mache ich falsch?
#include <ctime>
nichttime.h
.- Ersetzt habe ich Zeit.h mit <ctime> und machen eine Menge Fehler auf #, wenn GLOBAL_USING && !definiert(RC_INVOKED) _STD_BEGIN mit _CSTD clock_t; mit _CSTD size_t; mit _CSTD time_t; mit _CSTD tm; mit _CSTD asctime; mit _CSTD Uhr; mit _CSTD ctime; mit _CSTD difftime; mit _CSTD gmtime; mit _CSTD localtime; mit _CSTD mktime; mit _CSTD strftime; mit _CSTD Zeit; _STD_END #endif /* _GLOBAL_USING */ #endif /* _CTIME */
- Ich ersetzte std::clock() mit clock (), aber immer noch Fehler
- welchen compiler benutzt du?
- user2079303: Visual Studio 2013 Ultimate auf Windows 8.1, aber ich habe travis-ci auf das repository und Fehler zu: travis-ci.org/FoxEmu/FoxEmu
- die Fehler stammen aus dem standard-Header und scheint ein Kompatibilitätsproblem mit dem compiler.
- Haben Sie zufällig
#define
_SYS_TIME_H
oder_TIME_H
oder etwas ähnliches in Ihren Kopfzeilen oder als parameter an den compiler? Das würde wahrscheinlich dazu führen, den Fehler, dass Sie in travis.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es nur 2 Bibliotheken, die in diesem Satz.
<chrono>
ist Teil der c++ - standard-Bibliothek vorgestellt und wurde in c++11-version der standard. Keine der code scheint nichts von<chrono>
.<time.h>
ist Teil der c-standard-Bibliothek.<ctime>
ist ein header in der c++ - standard-Bibliothek, die wraps<time.h>
innenstd
- namespace anstelle der Globale namespace die einzige "namespace" in c.Sie enthalten die c-header, sondern versuchen, auf die
std
namespace. Das ist nicht korrekt. Gehören<ctime>
statt, so dassclock
werden instd
.Auf einen Blick, dein code scheint korrekt zu sein. Überprüfen Sie, dass tatsächlich die Codes zusammenstellen und bekommen die Fehler aus. Hier ist die vereinfachte version der Funktion, die kompiliert fein http://coliru.stacked-crooked.com/a/664f568053103f32
Stylewise, ich würde nicht empfehlen, mischen
<cXXX>
und<XXX.h>
Header. Pick.main
und gibt die build-Fehler. Dann schreiben Sie es in Ihrer Frage.Gelöst!
Das problem ist das Projekt verwenden enet-Bibliothek, und hat Zeit.h, beim umbenennen der Datei zu enet_time.h die bauen tolle Arbeit (Es ist vorübergehend beheben, ich denke, besser ist die Verwendung von namespaces).
Danke an alle und sorry für die inconvenients, ich Lerne mehr von Geschenkpapier C-Bibliotheken in C++ Dank an alle Antworten.
Einen Gruß
In C++ sollten Sie die "c" - Präfix, für alle Ihre C-Bibliothek
#include
s.So
#include <time.h>
werden sollte:#include <ctime>
.Aber beachten Sie, dass wenn Sie
#include <ctime>
alles in der Zeit.h wird nun in diestd
namespace.So
clock()
mussstd::clock()
.Weitere Infos finden Sie unter: http://www.parashift.com/c++-faq/include-c-hdrs-system.html