auto changements de sens en C++11; merci de le supprimer qu'est-ce que cela signifie?
Je suis en cours d'exécution de mon code ci-dessous qui vérifie si data_timestamp
est plus de deux semaines ou non. Si elle est de deux semaines, puis imprimer bonjour sinon imprime monde.
Je suis un développeur Java, a récemment commencé à travailler avec le C++. Appris quelques choses sur internet, donc je me sers ici de ce programme.
#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;
}
Je vais être en cours d'exécution de ce code sur Ubuntu 12.04. Quand je suis à la compilation lors de l'exécution make install
, c'est de me donner cette exception -
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
Peut-être, je ne suis pas avoir C++11
. C'est un programme simple qui j'ai fait mais la logique de base de ce programme, je suis de l'utiliser dans un grand projet C++, de sorte qu'il ressemble, je ne peux pas le port tout à C++11 pour faire ce travail. Est-il un autre moyen par lequel je peux écrire ce code qui n'utilise pas de C++11?
Mise à jour:-
C'est la façon dont je suis timestamp actuel en millisecondes dans un gros projet à certaines partie du code -
struct timeval tp;
gettimeofday(&tp, NULL);
uint64_t current_ms = tp.tv_sec * 1000 + tp.tv_usec / 1000; //get current timestamp in milliseconds
OriginalL'auteur john | 2014-08-06
Vous devez vous connecter pour publier un commentaire.
La nouvelle signification de la
auto
(déduire le type) a été introduit en C++11. Compiler votre code avec le drapeau-std=c++11
.Si vous utilisez le
chrono
- tête à tous, alors vous compiler du C++11 ce mode est activé. Si vous ne pouvez absolument pas utiliser le C++11, alors vous aurez à trouver une alternative. (Et bien sûr ne pas utiliserauto
.)Oui je pense, je ne peux pas utiliser le C++11 qui signifie que je dois trouver une alternative pour l'instant. Pouvez-vous penser à tout? Je n'étais pas sûr de ce C++11. J'ai pensé qu'il serait compilé partout. C'est ce que développeur java a apprendre je suppose que, tout en travaillant avec C++. 🙂
Envisager d'utiliser Boost.Le Chrono. C'est la bibliothèque C++11
std::chrono
est basé sur.Merci, Oui j'ai Boost inclure les en-têtes dans mon projet, donc je peux l'utiliser pour vous. Pouvez-vous donner un exemple, si possible, comment pourrais-je le faire à l'aide de Boost ici?
OriginalL'auteur Brian