Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1796 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [resolu]mega probleme sous visual SOS... SOS...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]mega probleme sous visual SOS... SOS...

n°1182272
giova
Posté le 23-08-2005 à 13:49:28  profilanswer
 

Bonjour tout le monde
 
J'ai un probleme tres important, ceci est un véritable appel de detresse !
 
Sans trop rentrer dans les detail, je debute, et je suis en periode d'essai pour un job de dev C++ avec pour outils visual. La boite pour qui je bosse est en vacance et j'ai un job à rendre pour la "rentrée". Le code qu'on m'a filé a été fait sous visual 7.1 or moi j'ai la 7.0 donc impossible d'ouvrir le projet  :( .
 
Pour pallier le probleme j'ai recupéré visual studio 2005, mais visiblement le compilateur est plus titilleux que les versions precedante, et voici là ou je bloque actuellement :  
 
j'ai une fonction de ce genre :  
 
int Fontion()
{
  for(int i=0 ; i< blabla; i++)
  {
     //code quelquonque
  }
  return i;
}
 
Et le compilateur me retourne une fatal error : error C2065: 'i' : undeclared identifier
 
J'imagine que l'on peut parametrer le compilateur pour qu'il ne soit pas aussi rigoureux, mais je n'ai ABSOLUMENT aucune idée de comment on peut faire.
 
Quelqu'un pourrait il m'aider par pitié, c'est vraiment tres important !!!
 
En vous remerciant tous mille fois d'avance pour votre aide... (3 jours que je cherhe des solutions et tourne en rond  :( )


Message édité par giova le 27-08-2005 à 23:43:52
mood
Publicité
Posté le 23-08-2005 à 13:49:28  profilanswer
 

n°1182275
giova
Posté le 23-08-2005 à 13:50:41  profilanswer
 

oh j'oubliais : je ne peux pas toucher au code, mon boulot est de le commenter uniquement. Mais j'ai besoin de pouvoir le compiler pour pouvoir bien le comprendre et ne pas ecrire de conneries.
 
merci encore.

n°1182295
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 14:08:13  profilanswer
 

Sous VC++ 7.1 aussi ce code ne compile pas si l'option de compatibilité VC++ 6 n'est pas activée.
Ce code est invalide. C'est une bonne chose qu'il ne compile pas.
C'est contrôlé par l'option /Zc:forScope, qui est désactivée par défaut sous VC++ 7.1, et activée sous VC++ 8, ce qui explique qu'il râle. Sous VC++ 7.1 ça se change dans les options du projet, C/C++->langue:"conformité forcée dans la portée d'une boucle For".
Ca doit pas être très éloigné dans VC++ 8.
Voir aussi #pragma conform
http://msdn.microsoft.com/library/ [...] onform.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182320
godbout
Génial.
Posté le 23-08-2005 à 14:21:20  profilanswer
 

HelloWorld a écrit :


Ce code est invalide. C'est une bonne chose qu'il ne compile pas.


Ah ben merde, moi j'les fais tous comme ça [:ocube]
C'est quoi qui va pas dans ce phrasé?  

n°1182324
Speedy37
Posté le 23-08-2005 à 14:27:28  profilanswer
 

godbout a écrit :

Ah ben merde, moi j'les fais tous comme ça [:ocube]
C'est quoi qui va pas dans ce phrasé?


 
int Fontion()  
{  
  int i;
  for(i=0 ; i< blabla; i++)  
  {  
     //code quelquonque  
  }  
  return i;  
}  
 
Sortir la variable i du scope de la boucle for pour qu'elle soit
encore connue au moment du return

n°1182370
godbout
Génial.
Posté le 23-08-2005 à 15:06:43  profilanswer
 

Ah ouais, évidemment, j'avais pas fait gaffe au return [:ocube]

n°1182376
giova
Posté le 23-08-2005 à 15:09:52  profilanswer
 

Merci mille fois HelloWord, oui l'option etait bien là ou tu disais sur visual 2005 beta, ce probleme est résolu.
 
Par contre (ca me saoule, je ne veux pas faire l'assisté, mais vraiment ca touche aux options du compilateur et je n'y connais rien, donc je bloque complet) j'ai un autre probleme du meme ordre :  
 
j'ai une fonction déclarée en public:  
 

Code :
  1. short CImageBox::PostProcess(BYTE * p_buf)


 
et quand dans le code j'ai un  
 

Code :
  1. if(pDlg->PostProcess)//blablabla


 
le compilateur le jete, et là je ne comprends vraiment pas quel est son probleme, voici son message :  
 

Code :
  1. error C3867: 'CImageBox::PostProcess': function call missing argument list; use '&CImageBox::PostProcess' to create a pointer to member


 
c'est la derniere erreur redondante qui me bloque (enfin j'espere :( )
 
Merci encore


Message édité par giova le 23-08-2005 à 15:10:45
n°1182381
Speedy37
Posté le 23-08-2005 à 15:13:31  profilanswer
 

giova a écrit :


 
[

Code :
  1. if(pDlg->PostProcess)//blablabla


 


 
Essaye plutôt if(pDlg->PostProcess())//blablabla

n°1182404
giova
Posté le 23-08-2005 à 15:26:25  profilanswer
 

mais je ne pourrai pas puisque si tu regarde la déclaration, il faut un argument de type pointeur sur BYTE, d'ailleur je ne comprends meme pas comment ca a pu compiler avant.. HHmmm il y a vraiment un truc qui m'echappe je vais etudier tout ca de plus pres.

n°1182410
giova
Posté le 23-08-2005 à 15:31:02  profilanswer
 

Pfff c'est demoralisant un code aussi degueulasse absolument pas structuré, absolument pas commenté, pour débuter, c'est vraiment HARDCORE !!! :(
 
ca donne envie de le balancer a la poubelle...
 
Bon... vais aller prendre l'air pour me ressaisir...

mood
Publicité
Posté le 23-08-2005 à 15:31:02  profilanswer
 

n°1182471
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 16:02:25  profilanswer
 

Quand j'ai lu:

Citation :

je ne peux pas toucher au code, mon boulot est de le commenter uniquement


Je me suis dit : le pauvre. Les mecs se retrouvent avec un code de merde que personne peut comprendre, alors ils ont filé ça à un pauvre gars. Elle dure combien de temps ta période d'essai ?
Sinon ça m'est arrivé pour mon premier stage. Avec le recul ça été une bonne expérience, j'ai été très sensibilisé sur la lisibilité du code. Mais sur le moment, oui, c'est éprouvant...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182520
slash33
Posté le 23-08-2005 à 16:27:33  profilanswer
 

Je voudrais quand même éclaircir un point. Si j'ai bien compris, le code
 

Code :
  1. int Fontion() 
  2.   for(int i=0 ; i< blabla; i++) 
  3.   { 
  4.      //code quelquonque   
  5.   } 
  6.   return i; 
  7. }


 
fonctionne sous Visual C++ 6.0 mais pas sous Visual C++ 7.0?
 
Faut-il adopter la seconde écriture (int i sorti de la boucle) si on veut améliorer la pérénité de son code?
 
De même ce code se compile t-il sous Visual C++ 7.0:

Code :
  1. int Fontion() 
  2. {
  3.   for(int i=0 ; i< blabla; i++) 
  4.   { 
  5.      //code quelquonque   
  6.   }
  7.   for(i = 0 ; i < blabla_again ; i++)
  8.   {
  9.   }
  10.   return i; 
  11. }


Message édité par slash33 le 23-08-2005 à 16:28:50
n°1182622
giova
Posté le 23-08-2005 à 17:27:37  profilanswer
 

HelloWorld> jusqu'à mi-septembre, et c'est exactement ce que tu dis, d'autant plus que le seul developpeur va se barrer en octobre, tu vois le topo.
 
mais bon, je m'en fous, ca me fait une experience professionnelle sur un soft assez pointu en plus (traitement d'images), puis qui sait... si je suis le seul apres a avoir le soft en tete meme en l'ayant documenté (sachant que tout part dans tous les sens, aucune structure, y a pas eu de phase se conception, ca se voit, ca a été du rajout permanent puis tu ficelage pour que ca ne bug pas...

n°1182625
slash33
Posté le 23-08-2005 à 17:30:51  profilanswer
 

Si on te fait documenter le source c'est à priori pour que d'autres puissent le maintenir...

n°1182627
giova
Posté le 23-08-2005 à 17:33:34  profilanswer
 

slash> en fait je pense que tout simplement le compilateur considere que i pourrait ne pas etre déclarré si la condition du for fait que... et comme il est possible que pour optimiser le code, il fasse sauter un for dont la condition sera fausse des la premiere boucle, il ne prend pas de risque et dit non.
 
enfin c'est comme ca que je l'imagine...

n°1182633
slash33
Posté le 23-08-2005 à 17:41:44  profilanswer
 

En fait ne te prend pas la tête. Il faut prendre à la lettre ce que j'écris. Donc je sais que le code que j'ai passé en exemple compile sous Visual C++ 6.0 puisque je code de cette façon depuis cinq ans.
 
Ma question est donc simple (et s'adresse aux développeurs Visual 7.0 et 7.1 expérimentés): est-ce que je code à tord mes boucles for et doit donc rectifier le tir pour faciliter le portage de mon code?

n°1182635
HelloWorld
Salut tout le monde!
Posté le 23-08-2005 à 17:46:34  profilanswer
 

Citation :

Faut-il adopter la seconde écriture (int i sorti de la boucle) si on veut améliorer la pérénité de son code?


Faut abandonner VC++ 6. Sinon y'a une astuce avec le préprocesseur.

Code :
  1. #ifndef for
  2. #define for if (0) {} else for
  3. #endif


http://www.boost.org/more/microsoft_vcpp.html
 
VC++ 6 est sorti avant la norme C++, en 98. On est en 2005, son support se termine complètement le mois prochain, et la version 8 arrive... il a fait son temps.
Je crois que /Zc:forScope a été introduit avec VC++ 7.1.
 
giova> j'espère juste que tu seras effectivement embauché après leur avoir fait le sale boulot.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1182640
slash33
Posté le 23-08-2005 à 17:54:20  profilanswer
 

HelloWorld a écrit :

Citation :

Faut-il adopter la seconde écriture (int i sorti de la boucle) si on veut améliorer la pérénité de son code?


Faut abandonner VC++ 6. Sinon y'a une astuce avec le préprocesseur.

Code :
  1. #ifndef for
  2. #define for if (0) {} else for
  3. #endif


http://www.boost.org/more/microsoft_vcpp.html


Ha oui effectivement l'astuce qui tue...
 
Abandonner VC++ 6.0 pourquoi pas mais je prend quoi à la place sachant que l'IDE doit être entièrement gratuit? Et je veux conserver un éditeur de ressources qui tienne la route, je fais trop d'interfaces pour m'en passer. :o  
 

HelloWorld a écrit :

giova> j'espère juste que tu seras effectivement embauché après leur avoir fait le sale boulot.


+1 quoi que si tu dois assurer la maintenance après avoir documenté le code...  :whistle:

n°1183032
HelloWorld
Salut tout le monde!
Posté le 24-08-2005 à 09:49:05  profilanswer
 

Citation :

Abandonner VC++ 6.0 pourquoi pas mais je prend quoi à la place sachant que l'IDE doit être entièrement gratuit? Et je veux conserver un éditeur de ressources qui tienne la route, je fais trop d'interfaces pour m'en passer


VC++ 6 est pas gratuit. Y'aura une version express de VC++ 8. Je sais pas trop ce que ça implique niveau tarif (gratuité, prix faible, ???), on sera fixés bientôt.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1183193
bjone
Insert booze to continue
Posté le 24-08-2005 à 12:02:22  profilanswer
 

VC++ 6 est obsolète.
il est pas au standard, et dès que tu veux faires des templates ça merde, même avec le dernier SP, et ne sera plus jamais suivi.
 
----
 
perso comment je commenterai:
 
"ça c'est une pratique obsolète, non portable, VC6 only"
"ça c'est exploitable"
"ça c'est laid"
"ça ça compile pas"
"le programmeur était-il conscient de ce qu'il écrit ?"
"impossible de déterminer l'intention du code"
"ça marche par la force du saint-esprit, code qui s'auto-exploite".
"construction générale fragile"
 
ce genre de commentaires, je le poses dans les projets sur lesquels je bosses au niveau taf.
pourquoi ? je remplaçes un mec qui a appris le C/C++ sur le tas dans la boite, qui a bricolé sur des softs malfoutus, qui ont été écrits sous DOS, portés sous Win3.1 puis sous 95.
bref là je fais de l'archéologie informatique, je suis donc tombé sur des perles rares, style:
 
"je sais pas me servir de malloc/realloc/free, et la STL et les templates t'oublies:
 
a) alors je prends un fichier ini, je lit une valeur j'en écrit une dedans, j'appelles une fonction, elle lit la valeur dans l'ini, elle en actualise une autre, au retour la fonction appellante relit la valeur de l'ini.
 
b) a quoi ça sert de conserver les infos ? bin non tiens je vais m'éclater a chaque fois que j'ai un traitement a faire, je vais tout perdre avec des fuites (sinon c'est moins drôle), relire des collections de données/valeurs avec notion de structuration/arborescence depuis des fichiers .ini (qui sont absolument pas adapté à ça, donc je vais utiliser un maximum de marqueurs laids au possible), et le tout avec aucun tests d'echec ce qui provoque des boucles sans fin quand il manque une entrée"
 
c) c'est quoi les dépassements de tampon ? chez moi un:
CString Val("AB" );
char bidule[2];
strcpy( bidule, Val );
marche très bien, et ce depuis 4 ans, c'est quoi le problème ?
 
d) tiens j'ai découvert les MFC, c'est vrai que CString ça a de la classe.
mais finalement, strcpy/strcat a tour de bras, ça fait vachement plus 3l33t, alors entre deux CString, je vais en caser..... (les opérateurs c'est pour les tarlouzes)

"
 
----
 
autrement dit, vis à vis du code qu'ils t'ont filés, il y a certainements des horreurs involontaires, et des horreurs volontaires pour voir si tu suis. il ne faut pas que tu sois spécialement tendre, si c'est merdique c'est merdique.
 
par exemple le coup du "if(pDlg->PostProcess)", soit c'est un test, soit il y a sérieursement un problème de revue de code (même personnel de la part du codeur) dans leur boite.... ( comme c'est dans la mienne  [:ddt] )


Message édité par bjone le 24-08-2005 à 12:06:31
n°1186160
giova
Posté le 27-08-2005 à 23:32:06  profilanswer
 

bjone, ton post m'a bien fait rire (j'en ris encore) car tu n'es pas loin de la vérité (c'est pire) des trucs allucinants, un programmeur du dimanche aurait fait mieux !!! dire que c'est un ingenieur qui a fait ca, non vraiment j'hallucine.
 
T'inquiete pas, mes commentaires j'ai vite décidé de ne plus etre tendre avec, marre de m'arracher les cheveux sur un code qu'on déroule comme un papier cul qui a deja servit. Je suis obligé de ne pas etre tendre, parceque :  
 
1) forcement on va TRES RAPIDEMENT bloquer et ne plus pouvoir faire évoluer le code (seul celui qui l'a créé serait d'ailleur capable de le faire évoluer, et vu qu'il part...)
 
2) apres on va croire que c'est moi qui ne suis pas capable de lire un code C++
 
mais bon je n'emploi pas tout a fait la meme methode que toi, je met en commentaire des questions, dont la réponse met en evidence le (c'est indefinissable) bricolage bordelique dépourvu de toute logique tenant au miracle si ca fonctionne ;) ( a condition que l'on soit dans des conditions parfaites, de reve, cad, aucune exception, cas special, le client est bien sage et fait excatement ce qu'il faut faire, le matos suit parfaitement, etc...  :whistle: )
 
PS : j'ai été obligé de recuperer la 7.1, le compilateur en 8.0 etait completement fou (ce qui est tout à fait normal vu la gueule du code, si vous saviez....)
 
Merci encore a vous tous en tout cas, maintenant "ca va aller"... :D


Message édité par giova le 27-08-2005 à 23:41:18
n°1186659
bjone
Insert booze to continue
Posté le 28-08-2005 à 23:57:06  profilanswer
 

heureusement le mec qui était avant moi n'était pas ingé.  
en même temps c'était pas de sa faute, il était initialement pas là pour ça (enfin je crois), a appris sur le tas, et n'avait pas de référentiel valable, puisque tout ce qui avait été fait avant lui était du même acabi.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [resolu]mega probleme sous visual SOS... SOS...

 

Sujets relatifs
Problème de perf php/mysqlremplacer une URL dans une string par une balise html [Résolu]
[VBA] Problème avec la fonction shellNewsletter PHP [Résolu]
Problème avec script sur mon siteProbleme avec mes liens
Probleme de preload apres série anticipée de loadMovie();Problème de frames [résolu]
[Résolu] Coppermine Photo Gallerie... HELP !!!! 
Plus de sujets relatifs à : [resolu]mega probleme sous visual SOS... SOS...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR