begin process at 2012 02 05 03:46:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > INTERPRETEUR DE SCRIPT (1ERE ÉTAPE): L'EVALUATION D'EXPRESSION

INTERPRETEUR DE SCRIPT (1ERE ÉTAPE): L'EVALUATION D'EXPRESSION


 Information sur la source

Note :
6,5 / 10 - par 2 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :17/11/2004 Date de mise à jour :03/12/2004 20:23:00 Vu / téléchargé :7 633 / 425

Auteur : syncppfrance

Ecrire un message privé
Commentaire sur cette source (54)
Ajouter un commentaire et/ou une note

 Description

alors voila, voici la 1ere partie dun interpreteur de script qui sera assez proche du C. Pour l'instant il fait juste l'evaluation d'expressionn, et la declaration de variable.

**** ne gere pas l'ecriture des commentaires *****

-les types gerés sont int, float, et string :

int v1; float v2;
string  v3 ;

- on est pas forcé de déclarer une variable, dans ces cas la, elle prendra le type de la premiere affectation
var1 = 4; //var1 sera un entier
var2 = "bla"; // var2 sera un string

- l'expression, comme le C, gere:
&& (et logique)
|| (ou logique)
== != <= >= > <  (les testes de comparaison) (rajout d test de string pour == et !=    "rr" == "ll")
& (et binaire)
| (ou binaire)
+ - / * % (plus mathematique, moins, multiplication, division et modulo) (et aussi la concatenation de chainde de caractere par l'operateur +)  "hhh" + "kkk"
+ - (le positif et negatif unaire) +4 -22
++v --v (pré incrementation/decrementation)
! (non logique)
v-- v++ (post incrementation/decrementation)
les fonctions
les convertisseurs int(), float(), string()       v = int("444");
()  les parentheses
=  ( l'affectaion simple)


LE CODE N'EST PAS OPTIMISE EN TAILLE POUR RESTER CLAIR A LA LECTURE.
SI VOUS VOYEZ DES OPTIMISATIONS EN TERME DE VITESSE, SIGNALEZ LE MOI!!! MERCIII
****************************************** ****************************************
********* *** MERCI DE ME SIGNALER TOUS LES BUGS QUE VOUS POURRIEZ TROUVER *************



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

17 novembre 2004 00:07:49 :
corrections des fautes
17 novembre 2004 00:09:23 :
correction du titre
17 novembre 2004 00:15:10 :
.
17 novembre 2004 00:21:23 :
.
17 novembre 2004 09:19:51 :
rajout d'une explication
17 novembre 2004 09:48:17 :
changement de la categorie
18 novembre 2004 14:30:30 :
- dans egal(), remplacer variablelist.push_back(p1); par if (p1->type == -1) variablelist.push_back(p1); - rajout d'un else if a la place dun if (rien de mechant)
19 novembre 2004 11:35:51 :
rajout opourt un oublie d'explication sur la concatenation de chaine de caractere par l'operateur mathematique + var = "ess" + "ai" + " numero " + string(varentier);
20 novembre 2004 21:51:37 :
correction d'un bogue dans les macros TESTD() et TESTG()
21 novembre 2004 18:19:21 :
oublie d'un test pour les operateurs < > <= >= sur les floattants.
28 novembre 2004 11:12:12 :
correction dun bug sur les tests de type pour les operateurs de testes binaire.
28 novembre 2004 12:00:52 :
correction dun bogue sur float() qui convertissait pas en float
03 décembre 2004 20:23:00 :
correction dun bogue sur les tests de comparaison > et <

 Sources du même auteur

Source avec Zip CREER UN FAKE CODE ASSEMBLEUR (V2)
CREER UN FAKE CODE ASSEMBLEUR
ANALYSE DE FORMAT D'ENTETE PE

 Sources de la même categorie

Source avec Zip ÉDITEUR DE RECTANGLES EN CONSOLE par seoseo
CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip DETECTEUR EJP par idpro
Source avec Zip Source avec une capture SHOP MANAGER CONSOLE SUR WINDOWS par antho974
Source avec Zip JOUR DE NAISSANCE par fredg19

Commentaires et avis

Commentaire de coucou747 le 17/11/2004 14:14:57 administrateur CS

posté aujourd'hui et autant de mises a jour ??
ça a l'air pas mal, mais pourquois recréer un language ? pour une utilisation particulière ? ou pour porter qqch ?

Commentaire de djl le 17/11/2004 16:29:18

"les convertisseurs int(), float(), string() v = int("444");"

c'est pas du c, c'est du c++ (appel d'un constructeur)
en c les transtypage c'est (Type)...

Commentaire de syncppfrance le 17/11/2004 18:37:23

- exact djl, autant pour moi, mais jai specifié C parce que yauras pas de class ou de << ou autre specificité du C++.

- coucou747, si tu remarques ce sont des mises a jour sur des blabla, pas du code.
l'utilité de recreer un langage est le meme que pour mirc ou unreal, vbs, javascript, et jen passe!!!

Commentaire de djl le 17/11/2004 19:20:17

ok je vois, au niveau de la synthaxe c'est meme plus claire comme ca int("444");

Commentaire de Arnaud16022 le 17/11/2004 22:51:13

quelques trucs que je ne comprends pas:
+++++var;
+-5
+4+++var;

sinon ca a l'air trop bien, dommage que tu n'affiches pas le resultat au fur et a mesure.
Je vais un peu potasser ca, j'ai jamais compris comment on pouvait coordonner 1400 lignes dans un seul fichier.
J'ai bien envie de faire un copier - coller dans mon prog... mais ca serait pas fair-play hein ? :) (et pis de tte facon j'en n'ai pas encore besoin, mais ca viendra)

Commentaire de syncppfrance le 17/11/2004 23:42:28

pour afficher le resultat pose un break juste apres l'appel de expression(ligne,&res); dans la boucle while de prog() et regarde ca (int *)res->data pour les entiers

si tu veux comprendre les regles, fait un trace

mais je vais enumerer quelques regles que jai fais:
(jespere ne pas me tromper, je fais ca de memoire)

var ++ 4 // erreur, va traduire var++ 4
10 ++ 4 // va etre traduit par 10 + +4
10 ++ var // erreur, sera tarduit par 10  ++var
var ++ var // erreur, traduit par var++ var

++++4 -----> +(+(+(+4)))
++++var ----> +(+(++var))
+4+++var ----> +4 + ++var


Commentaire de syncppfrance le 17/11/2004 23:46:43

ah oui, je met presque tout dans un seul fichier, parce que pour l'instant c'est pas finit, le but final que je veux obtenir est un interpreteur de script qu'un programme X peut appeler par des fonctions, et devra etre multithread, alors pour linstant je prefere globaliser tout pour plus de facilité.

Commentaire de syncppfrance le 18/11/2004 00:06:18

je corrige une regle:

10 ++ var // NE SERA PAS EN ERREUR, sera 10 + +var


Commentaire de Kirua le 18/11/2004 17:05:46

En C++, on préfèrera des fonctions inline à des macros préprocesseurs, qu sont un héritage archaïque du C.
Ça a l'avantage d'être plus rigoureusement vérifié par le compilateur (type renvoyé, type des paramètres etc...) et puis surtout, imagine une macro de ce genre:

#define Abs(x) ((x) < 0 ? (-x) : (x))

si tu l'appelles comme ceci:

Abs(un_objet->get_value_par_un_long_algo())

il va réeffectuer l'algo autant de fois que x est appelé dans ta macro, ce qui est potentiellement bugguant / très lent.

il faut préférer l'écriture:

inline type Abs(type var) { return var < 0 ? -var : var; }

à la rigueur, si ça t'énerve de devoir définir cette fonction pour tous les types (int, float, double, les long et les short associés), tu peux templatiser ce genre de chose.



#include <iostream.h>
#include <stdio.h>
#include <string.h>

en C++, on écrit ceci:

#include <iostream>
#include <cstdio>
#include <cstring>

normallement ton compilateur devrait rouspetter, je ne comprends pas :/


j'ai pas bcp cherché, mais est-ce que tu supportes les fonctions? et est-ce qu'elles peuvent être multi-paramétriques?


Tu devrais rajouter l'opérateur ^ (puissance: x^y = x élevé à la puissance y)


Tu gagnerais énormément en clarté/propreté et en réutilisabilité si tu intégrais tout ceci dans une classe CExpression. J'ai déjà écrit deux classes de ce genre par le passé (de deux façon différentes), et ça te permet vraiment d'atteindre une longueur de code minimale / une clarté phénoménale.


Bonne continuation ;)

by the way, je suis impatient de voir ton langage de script; j'en ai écrit un pr un projet de RPG, et c'est un sujet qui me passionne :)

Commentaire de Arnaud16022 le 18/11/2004 20:09:23

-> kirua : wais j'avais vu, j'avais halluciné en voyant ton fichier de script, presque du c++... c'est trop fort comme truc, dommage que t'aies pas mis le code , j'aurais fait un joli copier-coller ;)

Commentaire de Kirua le 18/11/2004 20:26:43

[mode je-parle-de-moi]
en fait c'est plus proche du Basic, sauf qu'il n'y a pas d'implémentation des sub (fonctions écrites par le scripteur), donc ça limite un peu; c'est juste bon pour mon jeu.
je mets pas le code parce qu'il est complètement orienté RPG Engine, et du couo pas réutilisable, et parce que c'est mon premier langage: il souffre d'erreurs de conception que j'ai décelée plus tard ds le dvpt et que j'ai pas corrigées.
je pense en fait bcp à réécrire un interpréteur générique, modulaire. si je fais ça un jour, je posterai le code ici.
[/mode]

Commentaire de djl le 18/11/2004 20:31:38

Arnaud16022 > ben pompe dans le code d'un compilo gnu

Commentaire de Kirua le 18/11/2004 20:35:52

"ben pompe dans le code d'un compilo gnu"

t'as déjà vu ce que c'est? j'avais dl le code source de GCC en son temps, c'est de la folie comme code :/ vraiment, je pense que t'as plutôt intérêt à essayer de mettre la main sur des doc qui parlent de la façon dont il faut designer les langages de scripts. j'en avais pas trouvé à l'époque ce qui explique les fautes de conception que j'ai faites, mais si tu trouves de bons docs, tu devrais pvr coder tt ça toi-même sans pomper.

commence qd même par écrire un bon intérpréteur d'expressions arithmétiques/logiques. si tu veux je peux te passer mon code, il fait aussi le calcul des dérivées, gère les constantes, les variables, les fonctions multi-paramétriques, tout plein d'opéros. le tout est récursif et encapsulé dans une classe. si ça t'intéresse: kirua AT coder-studio DOT com

Commentaire de djl le 18/11/2004 20:40:36

entierement d'accord, je parlais de pomper des modules, pas de comprendre le code

Commentaire de syncppfrance le 18/11/2004 22:44:56

kirua, je penserais a faire les mises a jour pour la 2eme partie : les blocs et les if, la 3eme sera surement les boucles, et enfin les procedures et ladaptation surement en dll. ensuite viendra peut etre une suite comme une precompilation de code pour aller plus vite a la lecture (une sorte de binaire mais avec du code assembleur simplifiié, soit x86, soit interpreté mais ce sera autre chose, vu qu la pour linstant on parle d'interpreteur de script et non de compilateur)

, pour linstant, il ne gere pas les procedures ou autre, il ne gere que les expressions comme tu as vu.

Commentaire de syncppfrance le 18/11/2004 22:48:11

et aussi lajout de variable, mais je pense que pour une meilleure facilité, il fadraut adapter et rajouter les types propres a son programme avant la compilation (directement en dur) comme par exemple la gestion des vecteur 3d, ou autre.

Commentaire de Kirua le 18/11/2004 22:49:47

pour ceux que ça intéresse, je me mets à la fastidieuse lecture de ceci: http://www.peroxide.dk/download/tutorials/pxdscript/chapter1.html.
première fois que je trouve un doc qui a l'air sérieux sur le sujet, gogogo :)

pour ce qui est de la pré-compilation, je te conseille ce qu'on appelle la semi-compilation (à la manière du bytecode java). l'idée, c'est de transformer les mots clefs en des signatures plus courtes, pour pouvoir effectuer le parsage du script (identification et séparation des lexèmes = éléments constitutifs du script) plus rapidemment, étant donné la toute relative rapidité du traitement des chaînes de caractères :p
il faut tt de même retenir que ça a un sérieux désavantage: tu es obligé de re"compiler" tes scripts après chaque modif avt de pvr les tester, ce qui est vite pelant quand tu dois tester ton jeu...

Commentaire de Kirua le 18/11/2004 22:54:26

"comme par exemple la gestion des vecteur 3d, ou autre."

c'est vrai que les langages structurels/OO étant difficiles à implémenter, ce serait un bon compromis de créer directement comme types intégrés les objets les plus courants comme les vecteurs 2/3 D, les couples de chaînes de caractères, ...
Il faudrait idéalement aussi prévoir des listes chaînes, voire même des tables de hashage si tu vois grand, accompagnées d'algos de tri/recherche etc... mon langage n'implémente pas les tableaux, et c'est un GROS handicape! j'ai dû en simuler un avec des astuces dignes des plus moches des workarounds, je suis pas fier de moi :/ comme tu commences encore ton langage, essaye de vrmnt prévoir les tableaux / listes chaînées natives, tu t'en féliciteras plus tard ;)

Commentaire de syncppfrance le 19/11/2004 00:27:31

"pour ce qui est de la pré-compilation, je te conseille ce qu'on appelle la semi-compilation (à la manière du bytecode java). l'idée, c'est de transformer les mots clefs en des signatures plus courtes, pour pouvoir effectuer le parsage du script (identification et séparation des lexèmes = éléments constitutifs du script) plus rapidemment, étant donné la toute relative rapidité du traitement des chaînes de caractères :p"

oué c'est ce que je volais dire par precompilation.

Commentaire de syncppfrance le 19/11/2004 00:30:02

oué bein pour tout cest trucs a ajouter, chaque chose en son temps.

Commentaire de syncppfrance le 19/11/2004 11:33:18

je iens a ajouter que pour les tableaux ca devrait passer tranquillement, fut un temps ou javais deja travailler sur ce genre de script avec des tableaux, donc jai encore (a peu pres) la solution en tete.

j'e mettrai pour la 2eme partie:
-les if et les bloc
-les tableaux
- ^ puissances
- les petites modifs de inline
- la gestion des vecteurs 3d et 2d (a base de float)
- peut etre des matrices ( je verrai )
- on verra pour la suite, c deja un bon debut

c'est quoi que tu appeles les couples de chaines de caracteres? ( parceque jai oublié de dire mais on peut concatener 2 chaines ensemble par  exemple comme ceci:

myvar = "ggg" + "iiii" + string(var4);

Commentaire de Kirua le 19/11/2004 19:14:48

ce que j'appelle couple de chaîne correspond avec la std C++ à ceci: pair<string>; ou bien plus classiquement en prog structurelle:

struct Couple
{
   string str1, str2;
};

c'est souvent utile pour associer un nom et une adresse par exemple, des choses comme ça. l'avantage de la version templatisée pair<type> est que tu peux associer tout ce que tu veux (vecteurs, entiers, ...)

Commentaire de Kirua le 19/11/2004 19:17:02

http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/structstd_1_1pair.html

voilà pr la partie de la stl nommée pair.

évidemment, tu peux aussi associer un entier et une chaîne etc... ce qui est encore plus parlant (associer un ID et un nom, un pointeur vers des données, ...)

je pense que ça ce serait tt de même assez chaud à implémenter ds ton langage de script... me paraît pas facile :)

Commentaire de syncppfrance le 19/11/2004 19:28:33

comme std::map?

Commentaire de Kirua le 19/11/2004 19:33:33

pas vraiment, et oui en même temps.
je dirais que map est plus apparenté à une table de hashage, mais n'en est peut-être pas une, j'avoue ne pas savoir. càd que map est de tte façon un conteneur: il contient une série de paires clef - données associées, et permet d'accéder aux données via les clefs, qui peuvent être de tout type, ce qui est pratique (tableaux associatifs, comme en PHP).

d'une certaine manière, on pourrait considérer que chaque élément d'une 'map' est une 'pair'. je n'en sais pas plus sur la STL, donc je ne peux rien affirmer.

Commentaire de magic_Nono le 22/11/2004 11:59:22

Très bon prj

Bon courage...

Question : pourquoi ne pas l'avoir fait directement avec le couple Lex/Yacc?
ça aurait été certainement plus simple et peut-etre mm encore plus rapide

++
Magicalement
Nono.

Commentaire de syncppfrance le 22/11/2004 12:25:07

ce qui minterresse, cest de le faire moi, sinon c pas drole.

Commentaire de Kirua le 22/11/2004 16:25:51

C'est quoi la différence entre Flex/Bison et Lex/Yacc ? (autre que les liens de parentés animaux entre le yacc et le bison :p)

suis d'accord avec toi syncppfrance, rien de tel que de tout faire soi même :) contrôle absolu et compréhension maximale! même si les perfs st forcément moindres, mais je suis prêt à faire le sacrifice perso...

Commentaire de magic_Nono le 22/11/2004 17:45:50

>suis d'accord avec toi syncppfrance, rien de tel que de tout faire soi même :) contrôle absolu et compréhension maximale! même si les perfs st forcément moindres, mais je suis prêt à faire le sacrifice perso...

tout à fait pour, c'est le mieux !!!!

sauf bien sur lors de développement commandés et en temps ultra limité (les contraintes de la vie active...)

mais c'est sur quje le mieux est de tout faire, tout gérer au max en utilisant parfois les fonctionnalités automatiques que l'on comptera évidemment reprendre ultérieurement.

Flex/Bison et Lex/Yacc  font exactement la mm chose

Flex/Bison est le couple du monde libre
les sources C/C++ en sont disponnibles...
sous licence GNU

@+
Nono.

Commentaire de Arnaud16022 le 23/11/2004 20:03:34

d'accord avec vous nono et syncppfrance
rien ne vaut le perso de chez perso ;)

Commentaire de djl le 23/11/2004 20:15:28

faut relativiser, aussi

pas exemple se limiter à l'emploi du langage et de sa bibliotheque standard et des apis de bas niveau du systeme, mais meme la ca peut etre du sucide

sinon tu pourrais toujours recoder ton os et ton langage, la tu seras sur d'avoir tout fais

Commentaire de Kirua le 23/11/2004 20:26:40

c'est pas pareil. utiliser la STL par exemple ce n'est pas de la "triche". Si tu t'en donnais le temps tu pourrais très bien coder toi-même des listes chaînées, aglos de tris etc (c'est très intéressant, je dis pas, ça me passionne d'ailleurs les différents algos de tri), mais une fois que tu t'en sais capable, rien ne t'oblige de te contraindre à ton implémentation (pour autant que tu en aies assemblée une). Pour la suite, utiliser les conteneurs de la STL permet d'obtenir des programmes vrmnt optimisés et très facile à lire pour d'autres codeurs, de même qu'ils seront plus portables: c'est tout bénef ;) Pour autant, tu n'auras pas réellement sauté une étape de ton apprentissage.

par contre, substituer une partie de ton code par les codes générés par Flex/Bison, ça c'est "tricher", dans le sens que ton programme sert justement à tester ta capacité à faire si pas pareil, qq ch d'apparenté.

Fin bon, c'est mon point de vue hein ^^

Commentaire de djl le 23/11/2004 20:35:36

je suis d'accord, on peut coder qqchose qui existe deja, pour le plaisir de comprendre

sinon vaut mieux eviter de reinventer la roue, c'est antiproductif
(sauf exceptions, contrainte, lenteur, ou parce que c'est mal foutu...)

Commentaire de Kirua le 23/11/2004 20:41:04

En fait, pour illustrer ça non plus à l'échelle des outils mais à l'échelle de projets entiers, combien de Pong, combien de Démineur, combien de Mario, Arkanoïd, Tétris... on n'arrête pas dans notre apprentissage de copier des projets pour se rendre compte des difficultés, aborder le problème plus essentiellement. Bien sûr, ça ne suffit pas en soi, ça doit être une passerelle vers une création plus personnelle, inovante, mais ça reste un passage courant, comme si ces jeux constituaient des exercices de cours :)

Commentaire de syncppfrance le 23/11/2004 20:56:56

reste aussi le fait que si tout le monde utilise que ce qui existe sans utiliser ce que lui a fait, on avancera jamais!!!! parcque dans c cas dans 100ans on auras toujours les vieilleries de lepoque, parceque tout le monde utilisra qe ce que propose les autres.  je veux bien utiliset sdl, opengl, etc, mais ya defois ou je prefere dependre de moi meme. fo le juste milieu sans chercher les extremes.

Commentaire de Kirua le 23/11/2004 20:59:00

je ne sais pas pour toi, mais je suis amateur, j'ai jamais eu de cours de prog et j'ai rarement pu lire des livres sur la programmation. je ne peux vrmnt pas prétendre faire mieux que la std/stl ^^ ceci dit, je t'accorde volontiers qu'il faut bien à un moment partir sur ses bases à soi, et c'est ce qu'on fait assez naturellement je crois donc ça pose pas de souci.

Commentaire de djl le 23/11/2004 21:00:50

opengl tu n'as pas trop le choix, si tu veux t'en passer faudrais que tu code toi meme un drivers pour ta carte graphique (si tu veux exploiter le matos)

Commentaire de djl le 23/11/2004 21:05:06

Kirua > la stl est codé par des cracks du langage (c'est hp il me semble ?), c'est fais pour ne pas etre recodé

Commentaire de Kirua le 23/11/2004 21:08:35

cracks ou pas, je trouve leur style de programmation déplorable ^_^ t'as déjà regardé les codes sources de la STL version GCC? c'est horrible mdr! et puis pour optimiser le tout il font un usage minimal des fonctions, du coup c'est plein de répétitions etc... vaut mieux qu'elles soient là que dans mon code, mais c'est mooooche :D je ne doute pas de l'efficacité par contre.

c'est pas forcément HP, ça dépend du port que tu considères. chaque compilo a sa distrib je pense, même si ça devrait pas être forcé a priori, j'en sais trop rien.

Commentaire de djl le 23/11/2004 21:13:55

ya beaucoup de hp qqsoit la platforme, (les interfaces des classes, les algos...)

sinon c'est vrai que c'est tres difficile à lire

Commentaire de syncppfrance le 23/11/2004 21:28:45

non mais qand je parle de opengl ou de sdl, jaurais tres bien pu parler de autre chose, c a titre d'exemple. c'est pas au mot a mot.

Commentaire de magic_Nono le 24/11/2004 09:28:56

pour des raisons de portabilité totales, j'utilise tjs mes libs perso; en plus les ayant conçues, une modif mineur est tjs faisable sans impacter ts les prog développés préalablement

mais pour une meilleur réutilisation
commentaires à mort et une norme/ convention de programmation ainsi que des méthodes

je peux pour cela vous conseiller de faire votre sauce entre UML et MERISE pour la méthode et pour la convention, et bien voyez celle développée pour MétaProg que j'ai déjà mis en ligne dans ces pages.

ce n'est pas un coup de pub mais juste quelques conseils que l'on pourrais qualifier de bonnes pistes pour un développement libre et de grande envergure.

Commentaire de Kirua le 24/11/2004 14:49:48

"pour des raisons de portabilité totales, j'utilise tjs mes libs perso;"

La std/stl (la stl n'est qu'un sous groupe de la std sauf erreur) est non seulement portable "dans l'absolu" (portée pour quasiment tous les compilos existant), mais en plus optimisée pour chacun de ces compilos, séparément. difficile de faire mieux, sans compter qu'il ne faut pas tripatouiller avec des #ifdef GCC #include "mes_listes_chaines_gcc.h" #elif etc etc etc... tout est fait pour toi.

ceci dit, c'est courageux d'avoir tout reprogrammé!

Commentaire de magic_Nono le 24/11/2004 15:08:01

la stl est très bien c'est sur, mais nous avons déjà débatu au travers de ces pages qu'elles n'étaient pas tout à fait compatible avec VC6

cf discutions du forum au cours de l'été.

Magicalement.
C'est en développant qu'on devient développeur.

Commentaire de Kirua le 24/11/2004 16:46:55

"qu'elles n'étaient pas tout à fait compatible avec VC6"

tu peux me faire un bref résumé des conclusions de cette discussion? ça m'étonne bcp. d'autre part, on sait tous que VC6 et les standars... aheum!

Commentaire de djl le 24/11/2004 19:00:48

Kirua > c'est simple, vc6 a du mal avec les templates, alors tu voit ce que ca  peux donner pour les model de la stl

et le code est pas terrible, pas optimisé (sous vc6, facile de faire mieux sois meme)

j'ai plus vc6, mais j'aimerais bien pouvoir donner des exemples (autre que le bug de la porté des variables/bloc)

sur google ou msdn, ca doit se trouver

Commentaire de magic_Nono le 25/11/2004 14:52:48

exemple de code C++ compilant avec VC6

{
if(int a=toto){...}
a=3;
}

exemple de code C++ ne compilant pas avec VC6

{
for(int a=0;a<2;a++){...}
for(int a=0;a<2;a++){...}
}


pr le reste, et bien un coup de google
sur vc6 et stl et tu trouveras

++
sinon, tu peux aussi parcourir les historiques des msg de chacuns...

bonne navigation.

Commentaire de syncppfrance le 25/11/2004 15:03:40

c normal, le int dans vc++ est declaré en dhosr du bloc for() du coup ca revient a faire:
int i;
int i; // variable deja existante

cest rigolo je viens juste de repondre au meme sujet a un post sur les newsgroup!!!!!

Commentaire de djl le 25/11/2004 16:32:53

seulement avec vc++6 syncppfrance

sinon

for(int a=0;a<2;a++);

est strictement équivalent à

{
int a;
for( a=0;a<2;a++);
}

...une variable auto à la porté du bloc dans lequel elle est déclarée...

Commentaire de Kirua le 25/11/2004 16:54:42

voui voui, je sais ça. je l'ai appris à me dépend en voulant intégrer une classe écrite par Wett sous VC6 dans un projet Borland C++ Builder, il a fallu tripatouiller ...

Commentaire de djl le 25/11/2004 17:25:03

du fait de l'age de vc6, ce bug est mineur (c'est surtout les templates et la stl qui sont genant)

je me rappele encore de certains codes bénin, utilisant la stl, qui ne compilaient pas sous vc6

Commentaire de magic_Nono le 26/11/2004 09:01:44

parfaitement exact.

VC6 date de 98, ça date en effet, mais c'est un produit fini permettant la production de solution complètes et fonctionnelles.

Les avantages a passer à une version ultérieure sont uniquement pour le développeur.

Voyez cette page et éventuellement, rajoutez y du grain à moudre...
http://www.cppfrance.com/forum.v2.aspx?ID=276360
+++
Merci

Commentaire de Kirua le 27/11/2004 00:56:26

"Les avantages a passer à une version ultérieure sont uniquement pour le développeur."

je veux pas dire, mais pour un outil de développement, des avantages développeurs ça a son intérêt quoi :D

Commentaire de magic_Nono le 29/11/2004 08:55:21

cf les liens cités.
Si c'est pour faire au final exactement la meme chose,
pourquoi payer un autre produit alors qu'on en a deja un (là, je fais l'avocat du diable, mais, il faut bien que qqn s'y colle.)
Ce un permet déjà tout même s'il n'est pas tjs élégant.

Allez donc expliquez a des décideurs non-informaticiens ces avantages....

:p
B

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 2,246 sec (4)

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