3000

(mmm ? Annéfé, tu peux te poser des questions #modui#)

3001

Perso, limiter la portée des variables, je ne trouve pas ça très communiste embarrassed
avatar

3002

grin


export int a;
export int b;

main()
{
}

?

3003

goulag int a;
goulag int b;

main()
{
}
avatar

3004

Zero: certains utilisent ca en lieu et place de faire une fonction, quand le code est court ca va, quand ca depasse 20 lignes ca commence a etre dur a suivre
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.

3005

Ah oui c'est comme tout, il ne faut pas en abuser smile
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3006

Perso je n'en vois surtout l'interet que pour patcher du code existant sans trop changer le comportement actuel et/ou pour des macro, ecrire du code des le depart en utilisant ca me semble bizzare.

Et encore pour les macro je prefere utiliser un

do { ...code... } while(0);
Pour la simple raison qu'il y a des (vieux) compilo qui ne comprennent pas la syntaxe sans le do/while
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.

3007

Oui c'est la raison habituellement avancée pour cette construction bizarre, mais perso je n'ai jamais rencontré de compilateur qui n'accepte pas des accolades comme élément de premier niveau (à part peut-être newcc65 pour la Lynx, mais celui ça compte pas tongue).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3008

do while 0, ça me semble quand même super louche sauf contrainte de compilateur ultra exotique, oui.

En plus j'ai toujours trouvé cette construction mal conçue, on peut avoir l'impression que le while est une boucle à lui tout seul selon comment on formate.

do {
//blah blah.
}




while ( bool );

sorry

3009

Pen^2 (./3008) :
do while 0, ça me semble quand même super louche sauf contrainte de compilateur ultra exotique, oui.
Il me semble que c'est utilisé dans les sources du noyau Linux (ce qui est un peu bizarre, parce que je crois qu'essayer de compiler le noyau avec autre chose que GCC ou clang est peine perdue de toute façon).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3010

squalyl (./2995) :
en C un bloc {} est une instruction composite éventuellement munie de déclarations locales au début
On est plus en 1989, hein cheeky
Nil (./3003) :
goulag int a;
goulag int b;
C'est pour killer la variable en cas de tentative de leak ?

3011

Zero: je sais plus a partir de quelle version de GCC c'est possible, mais certains "vielles" version ne sont pas compatible, idem Visual C++ (6?) n'etait pas compatible.

Oui c'est taper dans la viellerie, mais quand tu dev sur des machins bizzare on ne sait jamais sur quoi on peux tomber :/
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.

3012

Possible.

Folco > grin

Pour ce qui est des déclarations de variables à la volée (hors index de boucle), perso je n'aime pas, et ça à tendance à inciter à faire du code spaghetti.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3013

Et il ne suffit pas grand chose pour en faire :/
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.

3014

squalyl (./2995) :
en C un bloc {} est une instruction composite éventuellement munie de déclarations locales au début.
Zerosquare (./2997) :
et éviter de les déclarer loin de l'endroit où elles sont utilisées.
Je vous signale que le C permet les déclarations à l'intérieur d'un bloc depuis 1999, soit 18 années!

Dans le cas en question, il y avait une raison : dans le vrai code, la taille du tableau n'était pas fixe, mais renvoyée par une autre fonction.
Les tableaux de taille variable sont aussi du C99, d'ailleurs. Donc si tu utilises ça, autant aussi utiliser les déclarations à l'intérieur du code.

Godzil (./3006) :
Et encore pour les macro je prefere utiliser un

do { ...code... } while(0);
Pour la simple raison qu'il y a des (vieux) compilo qui ne comprennent pas la syntaxe sans le do/while
C'est surtout que:
#define FOO do { bla; bla; bla; } while(0)
est la seule manière standard d'avaler le point-virgule de FOO();. L'alternative:
#define FOO ({ bla; bla; bla; })
est du GNU C non-standard.
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é

3015

Non le standard a ete ratifie en 99 (et encore je ne suis pas sur de quand dans l'annee) il a fallut quelque temps pour que les compilateurs le supporte (et c'est aussi valide pour GCC), je n'ai pas entendu parler du C99 avant facilement 2003 ou 2004.

Oui en effet le do/while permet la virgule
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.

3016

En tout cas, GCC ne met même pas de warning si on utilise un point-virgule après une paire d'accolades. Mais bon, peut-être que des vieux compilateurs étaient plus pointilleux.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3017

Godzil (./3015) :
Non le standard a ete ratifie en 99 (et encore je ne suis pas sur de quand dans l'annee) il a fallut quelque temps pour que les compilateurs le supporte (et c'est aussi valide pour GCC), je n'ai pas entendu parler du C99 avant facilement 2003 ou 2004.
Les déclarations dans le code sont gérées par GCC depuis GCC 3.0 en 2001, les tableaux à taille variable même depuis GCC 0.9 de 1987!

Zerosquare (./3016) :
En tout cas, GCC ne met même pas de warning si on utilise un point-virgule après une paire d'accolades. Mais bon, peut-être que des vieux compilateurs étaient plus pointilleux.
Le point-virgule excessif n'est un problème que dans des contextes comme:
if (foo)
  FOO();
else
  BAR();
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é

3018

Ah oui OK, le genre de trucs que je ne fais jamais tellement c'est déjà casse-gueule à la base, quoi tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3019

Oui et l'adoption de GCC 3.0 a été tres lente, et beaucoup de distribution sont resté a 2.95 (et RedHat avec GCC 2.96) pendant plusieurs année le temps que GCC 3 se stabilise.
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.

3020

(oui basiquement ";;" est considéré comme une instruction vide)

Il serait bien que le standard C se force, enfin, a imposer l'utilisation des {}
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.

3021

3022

Parce que niveau lisibilité c'est clair de n'avoir qu'une seule alternative.
C'est ce qui est fait en Rust du coup ça permet aussi de se débarrasser des parenthèses autour de la condition.
avatar

3023

pour eviter les idiots qui font des trucs comme ca:

if (foo) bar() else boo()
{ } obligatoires pour marquer un bloc un point c'est tout, il n'y a vraimant aucune discussion a avoir sur ce point, ne pas les mettre c'est avoir des problemes a moyen/long terme
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.

3024

Godzil (./3019) :
Oui et l'adoption de GCC 3.0 a été tres lente, et beaucoup de distribution sont resté a 2.95 (et RedHat avec GCC 2.96) pendant plusieurs année le temps que GCC 3 se stabilise.
Pour Red Hat, ils ont gardé GCC 2.96 pour pouvoir sortir des releases 7.2 et 7.3 avec la compatibilité binaire dans les 2 sens, y compris pour le C++. Le code C pouvait être très bien compilé avec le RPM gcc3 rendu disponible par le mainteneur Red Hat de GCC (Jakub Jelinek, qui est toujours le mainteneur de nos jours). Et RHL 8.0 avec GCC 3.2 est sorti en 2002 (soit l'année d'après, pas question de "plusieurs années").
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é

3025

Quoi qu'il en soit, ce n'est pas parce que C99 est sorti en 99 qu'il a immédiatement adopté partout, loin de là. Donc la remarque de Godzil était pertinente.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3026

Ça donne vachement envie d'ouvrir la discussion en tout cas cheeky

Du coup j'ajoute ma toute aussi utile contribution, et je vote pour interdire les {} quand il n'y a qu'une instruction dans un bloc. C'est tout aussi déterministe, et plus concis sans aucune perte de lisibilité.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

3027

puis interdisons aussi le var.field , il suffit de faire &var->field

3028

Zeph (./3026) :
Du coup j'ajoute ma toute aussi utile contribution, et je vote pour interdire les {} quand il n'y a qu'une instruction dans un bloc. C'est tout aussi déterministe, et plus concis sans aucune perte de lisibilité.
Mais ça ne résout ni le problème des bogues si on veut rajouter une ligne plus tard et oublie de mettre l'accolade, ni celui des macros qui n'avalent pas correctement le point-virgule.
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é

3029

squalyl (./3027) :
puis interdisons aussi le var.field , il suffit de faire &var->field
sick C'est . la primitive et -> qui équivaut à (*var).field.
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é

3030

(que veux-tu, squalyl a oublié les balises [sarcasm])
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo