auto-Veränderungen der Bedeutung in C++11; entfernen Sie es bitte, was bedeutet das?
Ich bin mit meinem untenstehenden code, welcher prüft, ob data_timestamp
ist mehr als zwei Wochen alt sind oder nicht. Wenn es zwei Wochen alt ist, dann print hello ansonsten Drucke Welt.
Ich bin ein Java-Entwickler, die vor kurzem angefangen mit C++. Gelernt, einige Dinge über das internet, so bin ich hier in diesem Programm.
#include <ctime>
#include <chrono>
#include <iostream>
int main()
{
//this has to be uint64_t bcoz of old code
uint64_t data_timestamp = 1406066507000;
const auto now = std::chrono::system_clock::now();
auto twoWeeks = std::chrono::hours(24 * 14);
auto lastTwoWeeks = now - twoWeeks;
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(lastTwoWeeks.time_since_epoch()).count();
std::cout << "Time stamp in milliseconds since UNIX epoch start: "<< millis << std::endl;
if (data_timestamp < millis) {
std::cout << "Hello";
} else {
std::cout << "World";
}
return 0;
}
Ich, wird dieser code ausgeführt, auf Ubuntu 12.04. Wenn ich kompilieren, während der Ausführung make install
ist es mir dieser Ausnahme -
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: ânowâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
âtwoWeeksâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: âlastTwoWeeksâ does not name a type
warning: âautoâ changes meaning in C++11; please remove it [-Wc++0x-compat]
error: âmillisâ does not name a type
error: âmillisâ was not declared in this scope
Kann sein, dass ich mich nicht mit C++11
. Dies ist ein einfaches Programm, das ich gemacht, aber die Kern-Logik dieses Programm, das ich verwende es in einer großen C++ - Projekt so wie es aussieht, kann ich nicht port alles zu C++11 um diese Arbeit zu machen. Gibt es irgendeinen anderen Weg, mit dem ich schreiben kann, dieser code, welche nicht mit C++11?
Update:-
Dies ist der Weg, ich bin immer aktuellen Zeitstempel in Millisekunden an diesem großen Projekt an einem Teil der code -
struct timeval tp;
gettimeofday(&tp, NULL);
uint64_t current_ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds
InformationsquelleAutor john | 2014-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die neue Bedeutung von
auto
(ableiten, die in der Art) eingeführt wurde, in C++11. Kompilieren Sie Ihren code mit der Flagge-std=c++11
.Wenn Sie die
chrono
header überhaupt dann muss kompilieren mit C++11-Modus eingeschaltet. Wenn Sie absolut nicht mit C++11 ist, dann haben Sie eine alternative gefunden werden. (Und natürlich nicht zu verwendenauto
.)Ja, ich denke, ich kann C++11, was bedeutet, ich muss zu finden eine alternative für jetzt. Können Sie sich eine? Ich war nicht sicher über diese C++11. Ich dachte, es würde dann kompiliert überall. Dies ist, was java-Entwickler hat, um zu lernen, die ich denke, während der Arbeit mit C++. 🙂
Betrachten Sie mit Boost.Chrono. Das ist die Bibliothek, die C++11
std::chrono
basiert.Danke, ja ich habe Boost-include-Header in mein Projekt, so kann ich auf jeden Fall nutzen es für sicher. Können Sie ein Beispiel geben, falls möglich, wie würde ich es tun, mit Boost hier?
InformationsquelleAutor Brian