begin process at 2012 05 30 13:55:08
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

time() compile avec g++ mais pas avec code blocks (windows)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

time() compile avec g++ mais pas avec code blocks (windows)

jeudi 4 novembre 2010 à 14:01:37 | time() compile avec g++ mais pas avec code blocks (windows)

hacker_mt

Bonjour tout le monde, j'ai fait une classe en C++ qui utilise les fonction srand et time pour générer un nombre aléatoire dans une des méthodes de la classe.

Je l'ai codé sous linux d'abord avec gedit simplement, puis je l'ai compilé avec g++ et la compilation fonction parfaitement, et le programme fonctionne à merveille.

Cependant, j'ai voulu la reutiliser sous windows avec code::blocks, mais la le compilateur me renvoie un "error: 'time' was not declared in this scope".

voici la partie du code concernée :
#include "Jeu.h"
#include <iostream>
#include <vector>
#include <cstdlib>
using namespace std;

Jeu::Jeu() // Constructeur par defaut
{
srand(time(NULL));
}

j'utilise rand() un peu plus loin qui lui ne génère pas d'erreur car il fonctionne lorsque je met la ligne "srand(time(NULL))" en commentaire.

Je me suis dit que c'était une erreur dans les include, mais je ne pense pas puisqu'il marche sous linux et que même sous windows code::blocks ne fait pas d'erreur de compilation ni sur srand, ni sur rand ...

Quelqu'un pourrait il trouver d'où vient le problème ?

Merci d'avance :D
jeudi 4 novembre 2010 à 16:47:41 | Re : time() compile avec g++ mais pas avec code blocks (windows)

CptPingu

Administrateur CodeS-SourceS
Plusieurs remarques:
- Évite les using namespace std, voir: [ Lien ]
- Préfère 0 à NULL en C++, voir: [ Lien ]
- srand ne doit être appelé qu'une seule et unique fois dans tout le programme. C'est donc étrange de le mettre dans un constructeur. Généralement, on le met juste en dessous du main().

Fait le test suivant, compile ceci sous code::block:
Code C/C++ :
#include <cstdlib>

int main()
{
  srand(time(0));
  return 0;
} 


Si ça fonctionne, ton erreur doit être induite par quelque chose d'autre.
Sous Linux, as-tu bien pensé à compiler avec tous les flags ? (Si tu oublies des warnings, tu peux potentiellement passer à côté de problème de portabilité).

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 4 novembre 2010 à 17:06:41 | Re : time() compile avec g++ mais pas avec code blocks (windows)

hacker_mt

J'ai testé ton code pour voir, seul et sans classes juste un main.cpp et ça ne compile pas !!!, et pour la portabilité je pense que c'est bon puisque sans l'utilisation du srand(time(0)), le code fonctionne parfaitement sous linux ET sous windows ... (se qui veux aussi dire que cela ne vient pas d'un conflit de namespace)

Donc d'après le test de ton code c'est le "time" qui ne veut pas fonctionner puisque j'ai le droit au même message d'erreur (error: 'time' was not declared in this scope)

J'ai l'impression que ca vient de code::blocks lui même ...

Une idée ?
jeudi 4 novembre 2010 à 17:12:26 | Re : time() compile avec g++ mais pas avec code blocks (windows)

CptPingu

Administrateur CodeS-SourceS
Réponse acceptée !
J'avais oublié :p
#include <ctime>

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 4 novembre 2010 à 17:19:11 | Re : time() compile avec g++ mais pas avec code blocks (windows)

hacker_mt

\o/ c'est bon, c'était donc un problème d'include, il fallait mettre <cstdlib> ET <ctime>, ma classe fonctionne maintenant, merci :)

Par contre je comprend pas pourquoi sous linux ça c'est compilé correctement alors qu'il manque un include ???
jeudi 4 novembre 2010 à 17:26:07 | Re : time() compile avec g++ mais pas avec code blocks (windows)

CptPingu

Administrateur CodeS-SourceS
Ça ne compile pas chez moi (sous Linux) :)
Peut être que l'un des tes includes incluait indirectement ctime. Je n'ai pas la réponse à cette question en tout cas.

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 4 novembre 2010 à 17:28:28 | Re : time() compile avec g++ mais pas avec code blocks (windows)

hacker_mt

Ok dac, c'est pas grave, problème résolu ^^

Merci !


Cette discussion est classée dans : code, windows, include, time, blocks


Répondre à ce message

Sujets en rapport avec ce message

Difference [ par xionoxid ] C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i code:blocks socket windows [ par edf102 ] bonjour,ayant fais un prog utilisant les sockets sous linux j'essaye de faire la meme chose  sous windows (vista) avec code blocks, mais je ne sais pa Problème avec Code::Blocks [ par ndubien ] Bonjour,Il m'est impossible de compiler mon projet à l'aide de code::blocks: je vois apparaître sans cesse le message:"essai - Release" uses an invali Récupérer le handle d'une fenêtre par survol [ par sunvi ] Bonjour, je veux récupérer le handle d'un fenêtre par survol, voilà le code que j'ai écrit,enfin, j'ai modifié un code de quelqu'un d'autre pour que ç exemple de creation et utilisation d'un simple dll . [ par bonapart002 ] Bonjour:je suis débutant en c++ .je travail  avec Borland C++ 5.01.je veux créer une dll puis l'utiliser dans un programme .pour cela j'ai crée  un pr Boucle ne s'éxécute pas [ par Niwrad ] Bonjour à tous, Je suis plus ou moins débutant en programmation C, Je souhaite créer un programme (console) m'affichant une pyramide d'étoiles en fonc Librairie ODBC Code Blocks [ par sarcipus ] Bonsoir à tous,j'ai un petit souci de compilation sous Code Blocks, j'essaie de créer un programe (en C++) qui va interroger une base de données via O compilation sous vista avec code::blocks [ par elafitz ] el@fitz, bonjour à tous, (je ne sais pas si j'ai bien choisi le thème de mon problème) voilà, j'ai suivi avec passion et intéret l'excellent tuto d cree une dll en visual c++ express pour vba [ par assireme81 ] salut tout le monde c'est la premiere fois que j'utilise ce forum donc je ne sais pas comment ca marche vrement voila mon probleme je veux creer une


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,576 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales