OVH Cloud OVH Cloud

compatibilité VC60 et VC.Net c++ library (MFC / ATL)

57 réponses
Avatar
Vincent Burel
hello

Avec VC.NET , il semble que Microsoft ait modifié pas mal de libraries,
notamment C++ (MFC 70 et ATL) et ait ajouté quelques raffinement au langage
(keyword super / __super par exemple)... qui posent divers problemes de
portage / partage de projet VC.NET - VC 6.0.

Sans compter le fait que VC-Net est conçu pour etre multiplatforme (IA32
IA64 etc...), est-il quand même possible d'envisager une compatibilité
descendante VC 60 sur certains composants : Par exemple d'utiliser MFC 7.0
avec VC 6.0 ?

Vincent Burel
PS : Bonne année.
PS : oui, 2006 sera studieuse

10 réponses

2 3 4 5 6
Avatar
Bertrand Lenoir-Welter
John Deuf :

Les organismes de normalisation ne sont pas la pour gagner de l'argent.
Il n'y a pas de royalties sur les normes.
Le format gif n'a rien a voir avec l'ISO.



C'est bien ce que je dis : une norme n'est pas forcément pondue par un
organisme de normalisation. Et une norme pondue par un tel organisme
n'est pas forcément meilleure que celle créée par une boîte qui veut
gagner de l'argent avec.

J'ai un pote qui bosse à l'ETSI, organisme créé pour pondre de la norme
dans les télécoms. Que de conflits d'intérêts entre les membres...

Et a contrario, IBM a passé sa vie à pondre des normes privées qui sont
souvent devenues universelles.


Avance des arguments, parce que la c'est juste une reflexion de
comptoir.



Tu peux parler !


Press F1. En haut à gauche sur le clavier normalisé.



Et tu vas dire ca au chef de projet ? Mouarf.



Ouais, je peux dire - les yeux dans les yeux et en me grattant le nez -
au chef de projet que les commentaires sur l'API et les subtilités du
compilo ne sont pas de mon ressort et n'ont guère à être intégrés au
code source. Parfaitement.

Si tu commentes chaque mot de ton code, il te reste plus qu'à commenter
aussi tes commentaires.


Je dirais, 90% d'entre eux. Mais va sur le forum leur demander.



Mort de rire !


Si tu veux un exemple, regarde le CV de James Kanze, un des intervenant
les plus reguliers du forum (40 ans de programmtion en industrie) :
http://minilien.com/?9DRbzZWfMN



Ouais, James est quasiment LE SEUL exemple. Et ça fait un bail qu'il ne
programme plus dans l'industrie, pour ce que j'en sais.


PS: Il fait aussi partie du comite ISO qui decide de la norme c++.



C'est te dire s'il participe au quotidien à des projets concrets.


Tu te rends compte de ce que tu écris ?



Et toi ?
Les fonctions windows ne sont pas normalisees, tu peux consulter l'ISO,
l'afnor, l'ansi, le bsi, etc. Tu ne trouveras pas.



Mais moi, par contre, je dis pas qu'une fonction doit forcément passer
sous les fourches caudines de l'ISO pour exister et mettre être connue
de tout le monde.

Ou alors tu considères que l'API Windows est quantité négligeable. T'es
bien sûr d'être sur le bon forum ?

Finalement, la norme, c'est ce qui marche. Peu importe qui la crée.



C'est l'inverse : ca marche parce que c'est une norme.



Là, je reconnais que c'est toi qui as raison : il est bien évident que
la poule arrive avant l'oeuf.


Pour lesquelles il ne sera jamais compilé. Ca lui fait une belle
jambe.



Tu sais de quoi tu parles ?
Pas besoin de le recompiler.



Pour lesquelles il ne sera jamais traduit ni vendu. Va mieux comme ça ?
Avatar
Bertrand Lenoir-Welter
Vincent Burel :

le programmeur expérimenté écrira plutot :
if (mon_pointeur != NULL) delete(mon_pointeur);
mon_pointeur=NULL;



Putain, c'est la première fois que Vincent me traite de programmeur
expérimenté !

J'en suis tout retourné...

Vite, un café !
Avatar
Bertrand Lenoir-Welter
Vincent Burel :

Remarques que beaucoup écrirait :
if (mon_pointeur) delete(mon_pointeur);




Ah, zut, c'est ce que j'écris au quotidien.

Suis-je encore un programmeur expérimenté ?

Il vient, ce café ?!
Avatar
Vincent Burel
"Bertrand Lenoir-Welter" <bertrand-dot-2006-at-galaad-dot-net> wrote in
message news:43bcdd67$0$20149$
Vincent Burel :

> Remarques que beaucoup écrirait :
> if (mon_pointeur) delete(mon_pointeur);


Ah, zut, c'est ce que j'écris au quotidien.

Suis-je encore un programmeur expérimenté ?



oui, mais vous n'etes pas rigoureux...
Ca viendra avec le temps :-)

VB
Avatar
TERENCE
"John Deuf" a écrit dans le message de news:

C'est l'inverse : ca marche parce que c'est une norme. S'il n'y avait
que IBM qui avait pu construire des cartes vga, faute de norme, ce
standard aurait disparu.




VGA est normalisé ?
Et quel serait l'organisme normalisateur ?
Avatar
Arnold McDonald \(AMcD\)
Bertrand Lenoir-Welter wrote:

Je vois que tu t'es trompé de forum. Ici, c'est la programmation
Windows et pas autre chose. N'admets rien, je ne bosse QUE sous
Windows et ça changera pas demain. Alors la portabilité et autres
utopies, je la laisse aux boîtes qui ont envie de donner dans le
multiplateforme sans s'y casser les dents (elles sont pas nombreuses)
et aussi aux profs de fac. J'ai rien contre eux, hein, mais moi je
bosse dans le monde réel.



Eh voilà ! Mais ça, les Linuxiens/étudiants/universitaires, zélateurs du
libres, GNU, OpenSource et autres chantres de la portabilité auront toujours
du mal à le comprendre. Ils font de la philosophie eux, ils oeuvrent à ce
que sur cette planète l'informatique soit un monde parfait. Ils veulent
imposer leur point de vue sans tenir compte du fait que d'autres gagnent
simplement leur vie en n'étant pas comme eux, en ayant pas leur point de
vue.

Gagner sa vie en codant sous Windows uniquement, des milliers d'entreprises
ou indépendants y arrivent. Oui, ils suivent principalement les standards et
normes krosoftiennes pour cela. Et alors ? C'est ce qui les nourrit ! Que
leur code soit maintenable et déjà multiOS/Kro leur suffit largement. Que
leur importe qu'il soit portable sous des OS pour lesquels ils ne gagneront
jamais rien ?

Ce qui me fait marrer, c'est qu'aujourd'hui que l'informatique ets
relativement fiable et utilisable, ces zélateurs prennent le sabre de
combat. Pourtant, c'est au début qu'il fallait s'ériger en défenseur de
normes universelles. Il y a 20 ans, IBM disait le PC ce sera ça et tout le
monde fermait sa gueule et obéissait. Il y avait pas beaucoup de
collégialité dans l'établissement des standards/normes en ces temps-là
pourtant...

--
Arnold McDonald (AMcD)

http://arnold.mcdonald.free.fr/
Avatar
halfwolf
Vincent Burel a écrit :

Remarques que beaucoup écrirait :
if (mon_pointeur) delete(mon_pointeur);

Alors là c'est pire, car l'opération logique peut varier d'un compilo à
l'autre (certains compilo ne considère que le bit 0), la valeur du poin teur
null peut ne pas etre ZERO d'un systeme à l'autre.



Je n'ai pas très bien compris ce que tu veux dire.
Est-ce que tu veux dire que c'est le compilateur qui est en faute car
il fait une supposition erronée sur l'implémentation physique du
pointeur NULL et que dans ce cas, vu qu'il y a des compilateurs
buggués, il vaut mieux faire un test explicite ?

HalfWolf
Avatar
Vincent Burel
wrote in message
news:

Vincent Burel a écrit :

Remarques que beaucoup écrirait :
if (mon_pointeur) delete(mon_pointeur);

Alors là c'est pire, car l'opération logique peut varier d'un compilo à
l'autre (certains compilo ne considère que le bit 0), la valeur du


pointeur
null peut ne pas etre ZERO d'un systeme à l'autre.



Je n'ai pas très bien compris ce que tu veux dire.


Est-ce que tu veux dire que c'est le compilateur qui est en faute car
il fait une supposition erronée sur l'implémentation physique du
pointeur NULL et que dans ce cas, vu qu'il y a des compilateurs
buggués, il vaut mieux faire un test explicite ?

Je ne parle pas de compilateur buggé, je parle de certains compilo "c/c++"
(notamment pour DSP) qui peuvent faire une évaluation bolean sur un seul bit
(considéré comme FALSE si le bit 0 est à 0) et non pas sur la valeur
complete. Ecrire "if(mon_pointeur)" c'est considérer que "mon_pointeur" est
un bolean ou bien qu'il possède toutes les propriétés d'un bolean (ce qui
est largement faux).

il n'y pas d'implementation physique du pointeur NULL. NULL est un define
qui sous Windows est egal à ZERO. mais qui pourrait etre égal à 0x00000010,
car cette adresse là non plus n'est pas valide. pourquoi pas !? y'a des
systemes ou les pointeurs d'objets sont des indices basés sur zéro et où le
pointeur null est -1 = 0xFFFFFFFF.

Il faut donc savoir ce qu'on écrit quand on code. Et ainsi faire en sorte
d'éliminer le maximum de potentialité d'erreur, de malentendu possible, qui
seront autant de point faible a vérifier en cas de soucis...


VB
Avatar
Cyrille Szymanski
John Deuf wrote in
news::

Vincent Burel :

> le programmeur expérimenté écrira plutot :
>
> if (mon_pointeur != NULL) delete(mon_pointeur);
> mon_pointeur=NULL;

Non.



si



Non, c'est du code qu'on ecrit seulement pour les vieux compilo.
Pourquoi mettre un if alors que sans if c'est du code c++ correct.




Dans le même genre il y a les joyeusetés du style des évaluations
paresseuses. Certains te diront que c'est parfaitement normal de les
utiliser, d'autres trouveront que ça peut avoir trop d'effets de bord.

C'est une question d'habitude et la norme ne changera rien au fait qu'il
faut du temps pour s'approprier le code d'autrui.

Dans le fond, les normes c'est bien qu'il y en ait, mais on s'en fiche un
peu. Moi j'en ferai pas une question d'honneur. D'ailleurs qui programme
en vanilla C ou C++ ?

My 2 cents.


« f(foo) && g(bar) »

n'est pas équivalent à :

a = f(foo);
b = g(bar);
« a && b »

mais au contraire à :

f(foo) ? g(bar) : false

ou encore :

a = f(foo);
b = false;
if( a ) b = g(bar);
« a && b »

--
Cyrille Szymanski
Avatar
halfwolf
Vincent Burel wrote:
wrote in message
news:

Vincent Burel a écrit :

> Remarques que beaucoup écrirait :
> if (mon_pointeur) delete(mon_pointeur);
>
> Alors là c'est pire, car l'opération logique peut varier d'un compi lo à
> l'autre (certains compilo ne considère que le bit 0), la valeur du
pointeur
> null peut ne pas etre ZERO d'un systeme à l'autre.

>Je n'ai pas très bien compris ce que tu veux dire.
> Est-ce que tu veux dire que c'est le compilateur qui est en faute car
> il fait une supposition erronée sur l'implémentation physique du
> pointeur NULL et que dans ce cas, vu qu'il y a des compilateurs
> buggués, il vaut mieux faire un test explicite ?

Je ne parle pas de compilateur buggé, je parle de certains compilo "c/c ++"
(notamment pour DSP) qui peuvent faire une évaluation bolean sur un seu l bit
(considéré comme FALSE si le bit 0 est à 0) et non pas sur la valeur
complete. Ecrire "if(mon_pointeur)" c'est considérer que "mon_pointeur" est
un bolean ou bien qu'il possède toutes les propriétés d'un bolean ( ce qui
est largement faux).

il n'y pas d'implementation physique du pointeur NULL. NULL est un define
qui sous Windows est egal à ZERO. mais qui pourrait etre égal à 0x0 0000010,
car cette adresse là non plus n'est pas valide. pourquoi pas !? y'a des
systemes ou les pointeurs d'objets sont des indices basés sur zéro et où le
pointeur null est -1 = 0xFFFFFFFF.



Je ne sais pas en C++ mais en C il est garanti que NULL vaut (void*)0
par la Norme (et je pense que ça doit être pareil en C++).
Si la représentation en mémoire du pointeur est 0xFFFFFFFF le
compilateur fait l'abstraction. Donc le cas que tu décris serait un
bug du compilateur. D'où mon incompréhension sur le sens exact de ta
phrase.

HalfWolf
2 3 4 5 6