30

Kevin Kofler
:
Pollux
: Mon post était surtout pour répondre au post de Kevin qui disait qu'il n'aimait pas le fait que GCC deprecate des trucs (et/ou les enlève)... Pour l'exemple des multi-line string literals (dont il s'est plaint des dizaines de fois),

Pas seulement moi! Pas mal d'utilisateurs de TIGCC aussi, et des commentaires sur Slashdot aussi (à chaque newsitem parlant de GCC!).

Oué, enfin les commentaires de Slashdot, c'est pas forcément une référence en terme de pertinence neutral
je pense que les mainteneurs de GCC avaient raison.

bang

tongue
Et il y a pas mal d'extensions un peu "expérimentales" et bancales qui doivent être dans le même cas. Celle dont tu parles n'est pas dans ce cas-là, puisqu'elle a le mérite d'avoir une sémantique très claire...
Et les chaînes de caractères multi-lignes, elles n'ont pas une sémantique très claire???

Non, justement. Sous Win32, par exemple, un retour à la ligne doit être traduit par un \r\n ou par un \n ? Si j'utilise des routines spécifiques à Win32, je vais vouloir le premier choix, et si j'utilise des routines de la libc, ce sera plutôt le deuxième. Malheureusement, le compilo ne peut pas deviner à ma place...

Et il y a aussi les pbs de parsing que ça pose (non pas au niveau du compilo, où c'est une véritable trivialité, mais au niveau d'outils de recherche/manipulation/formattage)
* ça accroît la taille du code


dans ce cas la, ca la decroit, et de bcp si tu log massivement.
le seul truc que ca accroit, c'est eventuellement la taille de l'exe, et de facon negligeable. au final, ca fait plus chier le programmeur qu'autre chose... genial non?
Je parlais du code du compilo...
La taille et la vitesse du compilateur ne sont pas ce qu'il y a de plus important... La taille et la vitesse du code produit sont beaucoup plus importants.

Absolument. Mais les multi-line strings n'y changent strictement rien... (j'aurais même tendance à penser que ça l'affecte de manière négative, puisque si je l'utilise dans un contexte où le whitespace n'importe pas (qui est à peu près le seul contexte raisonnable où je peux l'utiliser), je vais rajouter des indentations et des newlines que je n'aurais pas eu en concaténant bêtement les chaînes).
si la feature est utile est tres utilisee (comme c'est le cas la), mieux vaut ne pas la supprimer ni la casser du tout...
vi... mais ce n'est pas le cas des multi-line string literals, par exemple.

what Hein???
Cette extension était (et est toujours dans le cas de TIGCC tongue) utilisée dans des centaines de sources! Même le noyau Linux les utilisait dans tous les sens!

<troll> Cette feature est d'autant plus néfaste qu'elle est utilisée tongue </troll>

Plus sérieusement, je n'ai aucune idée de l'ampleur du travail de conversion, donc je ne peux pas me prononcer : mais je soupçonne que s'ils l'ont fait, ça n'était pas si grave que ça.
Pollux :
Non, c'est
printf("truc
machin
bidule
marmotte\n");
qui est bien plus gore (pbs avec l'indentation
Il suffit de savoir qu'il ne faut pas indenter à l'intérieur de la chaîne (normal, c'est une chaîne de caractères, donc le whitespace est significatif).

Bravo, tu viens de souligner l'un des problèmes clé : c'est carrément _incompatible_ avec un formatage lisible de la source !!! (ou alors le whitespace n'importe pas dans la chaîne produite, et alors ça encourage à faire un binaire avec des caractères inutiles : je pense que cet argument te convaincra, même si personnellement j'aurais un peu tendance à m'en taper puisque le gâchis sera négligeable : le pb est surtout dans les cas où le whitespace compte)

Ca signifie aussi qu'un éditeur ne peut pas se charger automatiquement de l'indentation pour ces endroits-là sans risquer de changer la sémantique du programme : je trouve ça plutôt flippant...
et les retours à la ligne qui dépendent de la plateforme,

On utilise les retours à la ligne de la plateforme sur laquelle on travaille. C'est bon dans pratiquement tous les cas. (Surtout parce que des trucs comme printf acceptent à la fois \n et \r\n sans problèmes normalement.)

Ca m'étonnerait énormément que \r\n soit tjs accepté en remplacement de \n... Et pour un prog qui n'utilise que l'API portable, ça impliquerait qu'il se mettrait à foirer sous Win32 triso
on ne peut pas déterminer si on est dans une chaîne sans avoir lu tout le fichier depuis le début,

Et alors? On ne peut pas non plus déterminer si on est dans un commentaire /**/ sans avoir lu tout le fichier depuis le début (ou depuis le dernier */ dans certains cas).

Oui, mais déterminer si on est dans un commentaire n'est pas forcément indispensable... Par exemple on peut avoir envie de faire grep -i '^([^"]*"(\[^\"]*\[^\"]*)*")[^"]*"(\[^\"]*\[^\"]*)*marmotte' pour avoir la liste de tous les fichiers contenant potentiellement la chaîne de caractères "marmotte", en étant certain de ne pas en rater...

J'ajouterais aussi que le statut d'un commentaire n'est pas tellement différent de celui d'une directive de compilation conditionnelle, donc à moins d'implémenter un test de satisfaisabilité d'une clause (problème NP-complet, hein cheeky), il est impossible de savoir si un bout de code peut potentiellement être parsé par le compilateur ou s'il est mort... (et il m'arrive souvent d'utiliser des #if 0 avec du code syntaxiquement invalide, même si c'est peut-être Mal...)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

31

sBibi :
ah ok pour les asm effectivement tu t'en fous...
quelle idee aussi d'avoir cette syntaxe a la con... c'est quand meme mieux ca merde...

__asm
{
rtdsc
mov dword ptr [clock], eax
mov dword ptr [clock + 4], edx
push eax
call truc
...
}
que je sais pas quelle immondice avec gcc et cette foutue syntaxe AT&T (ou un nom du genre)...

Clairement ©

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

32

heu pour le truc des multi-line string literals, deja le seul endroit ou je vois un interet de les utiliser c'est pour l'asm inline, ou on en a rien a foutre du whitespace, et pour les autres cas, rien n'empeche d'utiliser la concatenation "normale" de chaines. l'identation est preservee dans les deux cas, et ca alourdit que dalle dans l'exe final.
enfin je sais pas si c'est vraiment plus pratique d'utiliser ca ou les concat normales pour l'asm... de tte facons l'asm de gcc est illisible de base et plutot lourd a ecrire donc c'est pas tres genant triso

(pour autre chose que du 68k hein...)
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

33

sBibi :
ah ok pour les asm effectivement tu t'en fous...
quelle idee aussi d'avoir cette syntaxe a la con... c'est quand meme mieux ca merde...

__asm
{
rtdsc
mov dword ptr [clock], eax
mov dword ptr [clock + 4], edx
push eax
call truc
...
}
que je sais pas quelle immondice avec gcc et cette foutue syntaxe AT&T (ou un nom du genre)...

La syntaxe asm("") GCC vs. asm {} M$VC n'a strictement rien à voir avec la syntaxe movl src,dest AT&T/GNU vs. mov dest,src Intel/M$. La preuve: les versions récentes de GCC et de GNU as permettent d'utiliser la syntaxe Intel, mais toujours dans des asm(""). Ton code en GCC avec -masm=intel:
 __asm ( 
 "rtdsc;"
 "mov dword ptr [%0], %%eax;"
 "mov dword ptr [%0 + 4], %%edx;"
 "push %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");

Ton code en GCC standard:
 __asm ( 
 "rtdsc;"
 "movl %%eax, (%0);"
 "movl %%edx, 4(%0);"
 "pushl %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");

(Soit dit en passant que tu remarqueras la ressemblance frappante avec le 68k...)
du moment que t'as une chaine ou les espaces importent ca sert vraiment a rien.

Si, il suffit de ne pas indenter à l'intérieur.
Pollux
:
Kevin Kofler :
Pas seulement moi! Pas mal d'utilisateurs de TIGCC aussi, et des commentaires sur Slashdot aussi (à chaque newsitem parlant de GCC!).

Oué, enfin les commentaires de Slashdot, c'est pas forcément une référence en terme de pertinence neutral

Écoute, c'est sur des sites comme Slashdot que tu vas trouver des utilisateurs de GCC.
je pense que les mainteneurs de GCC avaient raison.

bang

tongue

fireball
Et il y a pas mal d'extensions un peu "expérimentales" et bancales qui doivent être dans le même cas. Celle dont tu parles n'est pas dans ce cas-là, puisqu'elle a le mérite d'avoir une sémantique très claire...
Et les chaînes de caractères multi-lignes, elles n'ont pas une sémantique très claire???
Non, justement. Sous Win32, par exemple, un retour à la ligne doit être traduit par un \r\n ou par un \n ?

Le compilateur n'a qu'à utiliser ce qu'il y a dans la source.
Si j'utilise des routines spécifiques à Win32, je vais vouloir le premier choix, et si j'utilise des routines de la libc, ce sera plutôt le deuxième. Malheureusement, le compilo ne peut pas deviner à ma place...

Si, tu n'as qu'à mettre le bon retour à la ligne dans ta source. tongue
Et puis s'il est vraiment important lequel tu mets, autant le coder explicitement. Mais pour printf, une bonne implémentation de printf ignore complètement \r. Du moins pour Win32.
Et il y a aussi les pbs de parsing que ça pose (non pas au niveau du compilo, où c'est une véritable trivialité, mais au niveau d'outils de recherche/manipulation/formattage)

Ce n'est pas plus dur que les "" en une ligne et les escaped-newlines. Regarde par exemple la "correction" proposée pour les logiciels utilisant des chaînes de caractères multilignes:
printf("truc\n\
machin\n\
bidule\n\
marmotte\n");

Voilà, du coup c'est du C ISO/ANSI. Est-ce plus clair? Plus lisible? Plus simple à parser? Moins problématique avec les indentations?
La taille et la vitesse du compilateur ne sont pas ce qu'il y a de plus important... La taille et la vitesse du code produit sont beaucoup plus importants.
Absolument. Mais les multi-line strings n'y changent strictement rien... (j'aurais même tendance à penser que ça l'affecte de manière négative, puisque si je l'utilise dans un contexte où le whitespace n'importe pas (qui est à peu près le seul contexte raisonnable où je peux l'utiliser), je vais rajouter des indentations et des newlines que je n'aurais pas eu en concaténant bêtement les chaînes).

Dans un contexte comme asm, ça n'affecte pas le code généré. Dans un autre contexte, ben tu n'indentes pas à l'intérieur de ta chaîne! Tu mets longtemps à comprendre, toi...
si la feature est utile est tres utilisee (comme c'est le cas la), mieux vaut ne pas la supprimer ni la casser du tout...
vi... mais ce n'est pas le cas des multi-line string literals, par exemple.

what Hein???
Cette extension était (et est toujours dans le cas de TIGCC tongue) utilisée dans des centaines de sources! Même le noyau Linux les utilisait dans tous les sens!

<troll> Cette feature est d'autant plus néfaste qu'elle est utilisée tongue </troll>

Ah, parce que c'est à toi de décider ça. roll Tu es tout aussi arrogant que les mainteneurs de GCC. Ça promet pour ton compilateur...
Plus sérieusement, je n'ai aucune idée de l'ampleur du travail de conversion, donc je ne peux pas me prononcer : mais je soupçonne que s'ils l'ont fait, ça n'était pas si grave que ça.

S'ils l'ont fait, c'est parce qu'on ne leur a pas laissé le choix!
Bravo, tu viens de souligner l'un des problèmes clé : c'est carrément _incompatible_ avec un formatage lisible de la source !!!

Ben non. On voit tout de suite que si quelque chose traîne au début d'une ligne, on est dans une chaîne de caractères. smile
Ca signifie aussi qu'un éditeur ne peut pas se charger automatiquement de l'indentation pour ces endroits-là sans risquer de changer la sémantique du programme : je trouve ça plutôt flippant...

Un éditeur n'a pas à indenter à l'intérieur d'une chaîne de caractères! Tu proposes aussi d'indenter à l'intérieur de
printf("truc\n\
machin\n\
bidule\n\
marmotte\n");

, toi?
et les retours à la ligne qui dépendent de la plateforme,

On utilise les retours à la ligne de la plateforme sur laquelle on travaille. C'est bon dans pratiquement tous les cas. (Surtout parce que des trucs comme printf acceptent à la fois \n et \r\n sans problèmes normalement.)

Ca m'étonnerait énormément que \r\n soit tjs accepté en remplacement de \n... Et pour un prog qui n'utilise que l'API portable, ça impliquerait qu'il se mettrait à foirer sous Win32 triso

Si je me rappelle bien, l'API portable (printf etc.) accepte \r\n sans broncher sous Win32...
Oui, mais déterminer si on est dans un commentaire n'est pas forcément indispensable... Par exemple on peut avoir envie de faire grep -i '^([^"]*"(\[^\"]*\[^\"]*)*")[^"]*"(\[^\"]*\[^\"]*)*marmotte' pour avoir la liste de tous les fichiers contenant potentiellement la chaîne de caractères "marmotte", en étant certain de ne pas en rater...

Argh!!! C'est quoi cette horreur de regex?! Je n'ai certainement pas envie de rentrer un horreur comme ça, moi. tongue Moi, si je veux savoir ça, je cherche "marmotte" dans le binaire compilé, c'est plus simple. smile
J'ajouterais aussi que le statut d'un commentaire n'est pas tellement différent de celui d'une directive de compilation conditionnelle, donc à moins d'implémenter un test de satisfaisabilité d'une clause (problème NP-complet, hein cheeky), il est impossible de savoir si un bout de code peut potentiellement être parsé par le compilateur ou s'il est mort... (et il m'arrive souvent d'utiliser des #if 0 avec du code syntaxiquement invalide, même si c'est peut-être Mal...)

NP-complet != impossible...
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

34

Kevin Kofler
:
sBibi :
ah ok pour les asm effectivement tu t'en fous...
quelle idee aussi d'avoir cette syntaxe a la con... c'est quand meme mieux ca merde...

__asm
{
rtdsc
mov dword ptr [clock], eax
mov dword ptr [clock + 4], edx
push eax
call truc
...
}
que je sais pas quelle immondice avec gcc et cette foutue syntaxe AT&T (ou un nom du genre)...

La syntaxe asm("") GCC vs. asm {} M$VC n'a strictement rien à voir avec la syntaxe movl src,dest AT&T/GNU vs. mov dest,src Intel/M$. La preuve: les versions récentes de GCC et de GNU as permettent d'utiliser la syntaxe Intel, mais toujours dans des asm(""). Ton code en GCC avec -masm=intel:
 __asm ( 
 "rtdsc;"
 "mov dword ptr [%0], %%eax;"
 "mov dword ptr [%0 + 4], %%edx;"
 "push %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");

Ton code en GCC standard:
 __asm ( 
 "rtdsc;"
 "movl %%eax, (%0);"
 "movl %%edx, 4(%0);"
 "pushl %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");
(Soit dit en passant que tu remarqueras la ressemblance frappante avec le 68k...)

Je crois que c'est ce que sbibi désignait par "immondice" tongue
du moment que t'as une chaine ou les espaces importent ca sert vraiment a rien.
Si, il suffit de ne pas indenter à l'intérieur.

sick
C'est bcp moins lisible, c'est moche, et comme je l'ai dit ça empêche de formater automatiquement la source.
Pollux
:
Kevin Kofler :
Pas seulement moi! Pas mal d'utilisateurs de TIGCC aussi, et des commentaires sur Slashdot aussi (à chaque newsitem parlant de GCC!).

Oué, enfin les commentaires de Slashdot, c'est pas forcément une référence en terme de pertinence neutral

Écoute, c'est sur des sites comme Slashdot que tu vas trouver des utilisateurs de GCC.

Pas n'importe lesquels... Le geek adolescent boutonneux de base qui n'a rien compris ni à la vie, ni à l'informatique (mais il connaît qd même des choses parce qu'il y passe sa vie).
je pense que les mainteneurs de GCC avaient raison.

bang

tongue

fireball

Toujours vivant tongue
Et il y a pas mal d'extensions un peu "expérimentales" et bancales qui doivent être dans le même cas. Celle dont tu parles n'est pas dans ce cas-là, puisqu'elle a le mérite d'avoir une sémantique très claire...
Et les chaînes de caractères multi-lignes, elles n'ont pas une sémantique très claire???
Non, justement. Sous Win32, par exemple, un retour à la ligne doit être traduit par un \r\n ou par un \n ?
Le compilateur n'a qu'à utiliser ce qu'il y a dans la source.

sicksicksicksicksicksicksicksicksicksicksick
Alors là, Kevin, je crois qu'on va pouvoir te décerner la palme d'or de la plus mauvaise idée jamais émise par un être humain grin (ou presque)
Tu ne te rends pas compte que ça revient à changer le statut d'un code source de fichier _texte_ en fichier _binaire_ ??? Les programmes genre diff & co supposent qu'ils travaillent sur des fichiers textes, et un programme ciblé principalement pour Linux utilisant accessoirement les APIs Win utilisera sans aucun doute des \n tous bêtes... Donc non, je maintiens ce que je dis : la sémantique est complètement vaseuse et tu n'avais pas mesuré l'ampleur des dégâts.
Si j'utilise des routines spécifiques à Win32, je vais vouloir le premier choix, et si j'utilise des routines de la libc, ce sera plutôt le deuxième. Malheureusement, le compilo ne peut pas deviner à ma place...

Si, tu n'as qu'à mettre le bon retour à la ligne dans ta source. tongue
Et puis s'il est vraiment important lequel tu mets, autant le coder explicitement. Mais pour printf, une bonne implémentation de printf ignore complètement \r. Du moins pour Win32.

Non. Tu confonds la notion de sortie console et celle de sortie dans un fichier. printf "ignore" \r tout simplement parce qu'un \r n'a aucun effet _graphique_ sur la sortie (il place le chariot en début de ligne, mais comme on n'écrit pas de caractère après, ça ne fait rien). Mais si tu l'écris dans un fichier, un \r n'est jamais inerte... De même qu'un \b n'est pas censé ne rien faire en début de ligne...

Donc non, sans compter qu'en plus des routines d'IO il peut y avoir plein de routines de manipulations de chaîne au niveau utilisateur...
Et il y a aussi les pbs de parsing que ça pose (non pas au niveau du compilo, où c'est une véritable trivialité, mais au niveau d'outils de recherche/manipulation/formattage)

Ce n'est pas plus dur que les "" en une ligne et les escaped-newlines. Regarde par exemple la "correction" proposée pour les logiciels utilisant des chaînes de caractères multilignes:
printf("truc\n\
machin\n\
bidule\n\
marmotte\n");
Voilà, du coup c'est du C ISO/ANSI. Est-ce plus clair? Plus lisible? Plus simple à parser? Moins problématique avec les indentations?

Hmm j'avais oublié ça ^^ C'est tout aussi gore, c'est vrai. Mais au moins les lignes coupables sont grep-able avec grep '\$'... (donc les chaînes potentiellement coupables le sont aussi)
La taille et la vitesse du compilateur ne sont pas ce qu'il y a de plus important... La taille et la vitesse du code produit sont beaucoup plus importants.
Absolument. Mais les multi-line strings n'y changent strictement rien... (j'aurais même tendance à penser que ça l'affecte de manière négative, puisque si je l'utilise dans un contexte où le whitespace n'importe pas (qui est à peu près le seul contexte raisonnable où je peux l'utiliser), je vais rajouter des indentations et des newlines que je n'aurais pas eu en concaténant bêtement les chaînes).

Dans un contexte comme asm, ça n'affecte pas le code généré. Dans un autre contexte, ben tu n'indentes pas à l'intérieur de ta chaîne! Tu mets longtemps à comprendre, toi...

Justement, c'est bien tout le pb neutral
* si c'est dépendant du whitespace, on ne peut pas indenter à l'intérieur de la chaîne, donc c'est moche
* si c'est indépendant, l'éditeur est incapable de reformatter pour indenter automatiquement, donc c'est moche à moins d'une manipulation manuelle explicite (qui peut vite devenir lourde)
si la feature est utile est tres utilisee (comme c'est le cas la), mieux vaut ne pas la supprimer ni la casser du tout...
vi... mais ce n'est pas le cas des multi-line string literals, par exemple.

what Hein???
Cette extension était (et est toujours dans le cas de TIGCC tongue) utilisée dans des centaines de sources! Même le noyau Linux les utilisait dans tous les sens!

<troll> Cette feature est d'autant plus néfaste qu'elle est utilisée tongue </troll>

Ah, parce que c'est à toi de décider ça. roll Tu es tout aussi arrogant que les mainteneurs de GCC. Ça promet pour ton compilateur...

trifus
J'ai bien mis les balises <troll>, et j'ai donné mon vrai point de vue à la ligne d'après...

(et je crois qu'en matière d'arrogance, j'ai n'ai pas vraiment de leçons à recevoir de toi roll)
Plus sérieusement, je n'ai aucune idée de l'ampleur du travail de conversion, donc je ne peux pas me prononcer : mais je soupçonne que s'ils l'ont fait, ça n'était pas si grave que ça.
S'ils l'ont fait, c'est parce qu'on ne leur a pas laissé le choix!

what
Bravo, tu viens de souligner l'un des problèmes clé : c'est carrément _incompatible_ avec un formatage lisible de la source !!!

Ben non. On voit tout de suite que si quelque chose traîne au début d'une ligne, on est dans une chaîne de caractères. smile

Mouarf. J'avoue que l'idée est particulièrement géniale :
         Compute();
         if (x!=y)
           printf("You made a mistake:
%s (%d)",GetErrorStringFrom(x,y,data,foobar),
             GetLineNumber());
         Blah();

embarrassed
Ca signifie aussi qu'un éditeur ne peut pas se charger automatiquement de l'indentation pour ces endroits-là sans risquer de changer la sémantique du programme : je trouve ça plutôt flippant...

Un éditeur n'a pas à indenter à l'intérieur d'une chaîne de caractères! Tu proposes aussi d'indenter à l'intérieur de
printf("truc\n\
machin\n\
bidule\n\
marmotte\n");
, toi?

Sauf que c'est aussi à déconseiller. Un "\<newline>" ne devrait pas avoir lieu quand le whitespace a une importance quelconque (i.e. dans une chaîne de caractères), mais pour des raisons de cohérence on ne peut pas l'interdire.
et les retours à la ligne qui dépendent de la plateforme,

On utilise les retours à la ligne de la plateforme sur laquelle on travaille. C'est bon dans pratiquement tous les cas. (Surtout parce que des trucs comme printf acceptent à la fois \n et \r\n sans problèmes normalement.)

Ca m'étonnerait énormément que \r\n soit tjs accepté en remplacement de \n... Et pour un prog qui n'utilise que l'API portable, ça impliquerait qu'il se mettrait à foirer sous Win32 triso

Si je me rappelle bien, l'API portable (printf etc.) accepte \r\n sans broncher sous Win32...

cf plus haut
Oui, mais déterminer si on est dans un commentaire n'est pas forcément indispensable... Par exemple on peut avoir envie de faire grep -i '^([^"]*"(\[^\"]*\[^\"]*)*")[^"]*"(\[^\"]*\[^\"]*)*marmotte' pour avoir la liste de tous les fichiers contenant potentiellement la chaîne de caractères "marmotte", en étant certain de ne pas en rater...

Argh!!! C'est quoi cette horreur de regex?! Je n'ai certainement pas envie de rentrer un horreur comme ça, moi. tongue Moi, si je veux savoir ça, je cherche "marmotte" dans le binaire compilé, c'est plus simple. smile

Ca ne te le donne pas pour toutes les plateformes/configurations (c'est l'intérêt de manipuler le code source non préprocessé). Et la regex est compliquée, OK, mais le but est de montrer que c'est possible à intégrer dans un truc genre un script (sans avoir à faire de parseur ad-hoc).
J'ajouterais aussi que le statut d'un commentaire n'est pas tellement différent de celui d'une directive de compilation conditionnelle, donc à moins d'implémenter un test de satisfaisabilité d'une clause (problème NP-complet, hein cheeky), il est impossible de savoir si un bout de code peut potentiellement être parsé par le compilateur ou s'il est mort... (et il m'arrive souvent d'utiliser des #if 0 avec du code syntaxiquement invalide, même si c'est peut-être Mal...)
NP-complet != impossible...

Je comprends mieux pkoi GCC est si lent à compiler trisotfl

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

35

Kevin Kofler
: La syntaxe asm("") GCC vs. asm {} M$VC n'a strictement rien à voir avec la syntaxe movl src,dest AT&T/GNU vs. mov dest,src Intel/M$. La preuve: les versions récentes de GCC et de GNU as permettent d'utiliser la syntaxe Intel, mais toujours dans des asm(""). Ton code en GCC avec -masm=intel:



oui, ca je sais... mais justement, c'est ca que je trouve immonde. j'ai matte vite fait les src de gcc (outre les trucs super clean et facile a lire du genre des .c de 200 Ko ou on a l'impression que ca a ete ficele de toutes pieces, demonte, remonte, casse, repare a coups de sparadrap, reficele, etc...), et visiblement ils ont quelquepart des trucs dependants dui proc (pour la generation de l'asm visiblement), ca serait vraiment dur d'accepter et generer des src asm qui aient la meme syntaxe que l'asm de base du proc? genre une src en asm 68k si tu compile pour 68k, et ton asm inline c'est du 68k, une src en asm intel quand tu compile pour compatible x86, etc... ca serait vraiment bien... et franchement si ils savent pas quoi foutre plutot que de virer des trucs utiles et rajouter des trucs inutiles ca serait bien qu'ils droppent cette syntaxe de merde AT&T/GNU:
 __asm ( 
 "rtdsc;"
 "mov dword ptr [%0], %%eax;"
 "mov dword ptr [%0 + 4], %%edx;"
 "push %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");

Ton code en GCC standard:
 __asm ( 
 "rtdsc;"
 "movl %%eax, (%0);"
 "movl %%edx, 4(%0);"
 "pushl %%eax;"
 "call truc;"
 ... 
 ::"r"(clock):"eax","edx");

(Soit dit en passant que tu remarqueras la ressemblance frappante avec le 68k...)


oue bon ben en fait dans les deux cas je trouve ca immonde grin
et oui, je sais que ca a des ressemblances avec le 68k, qui est peut etre plus "logique", mais c'est pas une raison pour ignorer la syntaxe d'origine de l'asm du proc pour lequel tu code. et puis y a meme pas de compatibilite/recompilation entre procs != qui tienne... serieusement, j'aimerai savoir quel bout de code asm tu vas reutiliser entre un 68k et un x86 trifus
du moment que t'as une chaine ou les espaces importent ca sert vraiment a rien.
Si, il suffit de ne pas indenter à l'intérieur.

bah oue, mais dans ce cas la c'est moche et plus fatiguant/dur a lire smile
<troll> Cette feature est d'autant plus néfaste qu'elle est utilisée tongue </troll>

Ah, parce que c'est à toi de décider ça. roll Tu es tout aussi arrogant que les mainteneurs de GCC. Ça promet pour ton compilateur...

je _crois_ que c'etait ironique wink
je pense que les mainteneurs de GCC avaient raison.

bang

tongue

fireball

fessesrfireball.gif

trilove
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

36

Kevin Kofler :
Je suis entièrement d'accord avec toi! Cf. aussi http://b15.ezboard.com/ftichessteamhqfrm13.showMessage?topicID=453.topic.
Je peux réverser ça pour TIGCC et te faire parvenir un patch à appliquer à FSF GCC pour réverser ça, mais c'est tout ce que je peux faire, moi.
Vivement un fork de GCC:
* sans copyright assignments!
* avec une attitude pro-extensions comme dans les "beaux vieux temps"!
* avec un système de patches "no objections means go ahead" (à la KDE) plutôt que des patches qui attendent des mois que quelqu'un bouge son c*l pour les "review"er! Alors, personne pour m'aider à mettre en place un tel fork?

pour faire plus "français" on dit "le bon vieux temps"
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

37

Et pour faire encore plus "français" on ne dit pas "dans le bon vieux temps" mais "au bon vieux temps"...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

38

oui aussi
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

39

je ne disais pas ça pour te contredire, hein, je disais juste ça parce que Kevin aurait pu croire qu'on disait "dans le bon vieux temps"...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

40

oui, aussi 
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

41

oui,, aussi

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

42

aussi, oui ?
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

43

ho hisse, ho ouiiiii
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

44