Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#476 Le 27/12/2010, à 00:44

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Bon je vois que l'évaluation des points du CLFB ne fait pas réagir grand monde donc je me lance hmm

CLFB de base => 4 nuits donc 40 points (on pourra « arrondir » à 42 tongue).
CLFB avec option => 7 nuits donc 70 points.
Gestion des ACL => 1 ou 2 nuits donc 10 ou 20 points, à voir...
Gestion des archives => 2 ou 3 nuits donc 20 ou 30 points, à voir...

Le truc, c'est que si on n'implémente pas toutes les options il faudrait un nombre de points défini par options afin de pouvoir noter comme il faut.
M'enfin, on va dire que c'est un premier jet grossier pour amener d'autres propositions. Quand on aura fixé le nombre de point global on pourra répartir ça option par option.

Je vous avais prévenu que j'étais mauvais pour ce genre de choses, donc à vous de faire vos propositions pour rectifier le tir big_smile



Sur ce, BN World !

Dernière modification par grim7reaper (Le 27/12/2010, à 01:03)

Hors ligne

#477 Le 27/12/2010, à 01:25

gnuuat

Re : /* Topic des codeurs couche-tard [3] */

pig


Bisouland : embrassez les tous !
Volez les points d'amour de vos adversaires en les embrassant, dans ce jeu gratuit par navigateur !

Hors ligne

#478 Le 27/12/2010, à 01:31

Pylades

Re : /* Topic des codeurs couche-tard [3] */

/me a changé quelques trucs à sa ligne standard…

gcc -std=c89 -pedantic -Wall -Wextra -Winit-self -Wstrict-prototypes -Wold-style-definition -Wredundant-decls -Wwrite-strings -Wcast-qual -Wconversion -Wunreachable-code -Wformat=2

J'ajoute aussi -Wpadded en debug.
Et bien, à eux deux, -Wconversion et -Wpadded me balancent 42 avertissement pour Libstropt (j'ai compté tongue).
Je vais avoir du boulot…


(Bon, en même temps j'ai tout en double, étant donné que je compile deux fois, une avec -fpic, l'autre sans.)


.

Dernière modification par Pylade (Le 27/12/2010, à 02:05)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#479 Le 27/12/2010, à 03:05

Кຼزດ

Re : /* Topic des codeurs couche-tard [3] */

plop


dou

Hors ligne

#480 Le 27/12/2010, à 03:06

samυncle

Re : /* Topic des codeurs couche-tard [3] */

smile


Hello world

Hors ligne

#481 Le 27/12/2010, à 03:17

\\Ouranos//

Re : /* Topic des codeurs couche-tard [3] */

neutral


Ubuntu facile, c'est :
- Dire "Bonjour"
- Lire la doc et les règles du forum avant de poster. Savoir poser une question intelligemment.
- Mettre des balises url autour des liens et un tiret à su.

Hors ligne

#482 Le 27/12/2010, à 03:21

compte supprimé

Re : /* Topic des codeurs couche-tard [3] */

Bn;

#483 Le 27/12/2010, à 04:10

nesthib

Re : /* Topic des codeurs couche-tard [3] */

plop


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#484 Le 27/12/2010, à 08:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [3] */

Scores totaux, depuis le début :

1) 2171    nesthib
2) 2042    samuncle
3) 1744    Pylade
4) 1373    Кຼزດ
5) 1048    cm-t
6) 1032+5  grim7reaper /* ./viewtopic.php?pid=3486252#p3486252 */
7) 759    \\Ouranos//
8) 724    helly
9) 716    Р☢w ! ✰ :mad: ✰ (эй !)
10) 517    gnuuat
11) 493    Lagierl
12) 348    tshirtman
13) 196    Askelon
14) 185    Kanor
15) 172    nathéo
16) 121    ǤƦƯƝƬ
17) 93    petifrancais
18) 88    The Uploader
19) 81    Rolinh
20) 78    edge_one
20) 78    pierguiard
22) 70    gulp
23) 59    kamui57
24) 37    ilagas
25) 32    Le Rouge
26) 30    keny
27) 25    GentooUser
27) 25    Morgiver
29) 24    ไ୦บเઢ'
30) 22    xapantu
31) 21    Steap
32) 20    CROWD
33) 18    Ph3nix_
34) 15    timsy
35) 14    kouskous
36) 12    stratoboy
36) 12    sailing
36) 12    sakul
39) 11    alexises
39) 11    Crocoii
41) 10    Toineo
41) 10    NutMotion
41) 10    pseudovingtcinqcaracteres
41) 10    pfriedZ
41) 10    d10g3n
46) 8    Mornagest
47) 7    Vista
48) 6    Zeibux
48) 6    ubuntlin
48) 6    asma.geek
51) 5    tendances-tdct
51) 5    kinouchou
53) 4    danychou56
53) 4    Neros
53) 4    Biaise
53) 4    totoflute
53) 4    pinballyoda ㋛
58) 3    Revan26914
59) 2    SoJaS
59) 2    ceric
61) 1    geenux

chart?chs=675x280&cht=p3&chco=d80020,d88000,ffd840,20d820,2080ff,101080,a020d8&chf=bg,s,fbf9f4&chl=00h%20-%2000h59|02h%20-%2002h59|03h%20-%2003h59|07h%20-%2007h59|09h%20-%2009h59|13h%20-%2013h59|16h%20-%2016h59|17h%20-%2017h59|21h%20-%2021h59|22h%20-%2022h59|23h%20-%2023h59&chd=t:2,4,1,2,1,2,1,2,6,1,3&chp=1.6&chtt=R%C3%A9partition%20des%20posts&chts=606060,16chart?chs=675x250&cht=bvs&chxt=x,y&chds=0,10&chxr=1,0,10&chf=b0,lg,0,803000,0,ffc080,1|bg,s,fbf9f4&chxl=0:|05h|06h|07h|08h|09h|10h|11h|12h|13h|14h|15h|16h|17h|18h|19h|20h|21h|22h|23h|00h|01h|02h|03h|04h&chxp=0,0.7,4.9,9.1,13.2,17.3,21.5,25.6,29.8,33.9,38,42.2,46.3,50.5,54.6,58.8,62.9,67,71.2,75.3,79.4,83.6,87.7,91.8,96&chd=t:0,0,2,0,1,0,0,0,2,0,0,1,2,0,0,0,6,1,3,2,0,4,1,0&chm=N,803000,0,-1,12&chtt=|Nombre%20de%20posts%20par%20heure&chts=606060,16


Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#485 Le 27/12/2010, à 08:42

Compteur du TdCCT

Re : /* Topic des codeurs couche-tard [3] */

Scores de la période en cours :

1) 194    nesthib
2) 157    Pylade
3) 156    Кຼزດ
4) 152    samuncle
5) 145    grim7reaper
6) 90    gnuuat
7) 85    Lagierl
8) 73    Rolinh
9) 68    helly
10) 60    \\Ouranos//
11) 55    tshirtman
12) 41    cm-t
13) 29    The Uploader
14) 25    Р☢w ! ✰ :mad: ✰ (эй !)
15) 18    Kanor
16) 16    Steap
17) 12    sakul
18) 10    pierguiard
18) 10    d10g3n
20) 5    kinouchou
20) 5    Morgiver
22) 3    xapantu
22) 3    Revan26914

Codez-vous trop tard le soir ?
Demandez au Compteur du TdCCT pour le savoir !

J’ai été généreusement codé par tshirtman ; d’ailleurs, voici mon code source. TdCCT CEP : ./viewtopic.php?pid=3493579#p3493579 (p3492608).

Hors ligne

#486 Le 27/12/2010, à 12:04

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Hello World !



Pylade a écrit :

/me a changé quelques trucs à sa ligne standard…

gcc -std=c89 -pedantic -Wall -Wextra -Winit-self -Wstrict-prototypes -Wold-style-definition -Wredundant-decls -Wwrite-strings -Wcast-qual -Wconversion -Wunreachable-code -Wformat=2

J'ajoute aussi -Wpadded en debug.

Ouais, mais attention quand même : Wold-style-declaration est redondant.

man gcc a écrit :

-Wold-style-declaration (C and Objective-C only)
           Warn for obsolescent usages, according to the C Standard, in a declaration. For example, warn if storage-class specifiers like "static" are not the first things in a declaration.  This warning is also enabled by -Wextra.

-Wredundant-decls et -Wcast-qual => OK, je vais les ajouter aussi je pense (bien que le premier me semble moyennement utile, au même titre que -Winit-self).
-Wconversion je pensais déjà l'avoir, mais en fait non (comme pour -Wcast-qual, je l'avais juste mis pour le C++ hmm) donc je vais l'ajouter aussi.
Pour -Wpadded, à voir. Mais ouais, peut-être qu'en mode debug



De mon côté, j'ai ajouté -Wfloat-equal (je suis étonné de ne pas l'avoir mis avant celui-là), -Wshadow, -Wundef (je l'ai aussi ajouté à mon g++ celui-là), -Wbad-function-cast et -Wcast-align.

Au final, je me retrouve avec ça

alias gcc_profile='gcc -pg -ansi -pedantic -Wall -Wextra -Wformat=2 -Winit-self -O2 -Wcast-qual -Wcast-align -Wconversion -Wwrite-strings -Wstrict-prototypes -Wfloat-equal -Wshadow -Wredundant-decls -Wundef -Wbad-function-cast'

alias gcc_release='gcc -ansi -pedantic -Wall -Wextra -Wformat=2 -Winit-self -O2 -Wcast-qual -Wcast-align -Wconversion -Wwrite-strings -Wstrict-prototypes -Wfloat-equal -Wshadow -Wredundant-decls -Wundef -Wbad-function-cast'

alias gcc_debug='gcc -g -ansi -pedantic -Wall -Wextra -Wformat=2 -Winit-self -Wcast-qual -Wcast-align -Wconversion -Wwrite-strings -Wstrict-prototypes -Wfloat-equal -Wshadow -Wredundant-decls -Wundef -Wbad-function-cast -Wunreachable-code -Wpadded'

Y'a pas à dire, lire le man de gcc le matin ça ne fait pas de mal.
Un jour faudra que je me penche sur les options de debug et d'optimisations (un jour…).

Dernière modification par grim7reaper (Le 27/12/2010, à 14:47)

Hors ligne

#487 Le 27/12/2010, à 15:39

Pylades

Re : /* Topic des codeurs couche-tard [3] */

grim7reaper a écrit :

[…]
Ouais, mais attention quand même : Wold-style-declaration est redondant.

man gcc a écrit :

-Wold-style-declaration (C and Objective-C only)
           Warn for obsolescent usages, according to the C Standard, in a declaration. For example, warn if storage-class specifiers like "static" are not the first things in a declaration.  This warning is also enabled by -Wextra.

C'est pour ça que ne l'ai pas ajouté mais que j'ai ajouté -Wold-style-definition. tongue


grim7reaper a écrit :

-Wredundant-decls et -Wcast-qual => OK, je vais les ajouter aussi je pense (bien que le premier me semble moyennement utile, au même titre que -Winit-self).
[…]

Ça permet déjà de repérer les erreurs d'inclusion d'headers


grim7reaper a écrit :

[…]
De mon côté, j'ai ajouté -Wfloat-equal (je suis étonné de ne pas l'avoir mis avant celui-là), -Wshadow, -Wundef (je l'ai aussi ajouté à mon g++ celui-là), -Wbad-function-cast et -Wcast-align.
[…]

-Wcast-align, j'ai dû mal comprendre, car je n'ai jamais réussi à recevoir un avertissement de sa part…
-Wshadow et -Wundef, j'ai regardé mais je n'ai pas trouvé ça utile.
Pour -Wfloat-equal et -Wbad-function-cast, je vais aller voir…

Donc, -Wfloat-equal, je l'ajoute tout de suite, suis étonné qu'il ne soit pas activé par -Wall ou -Wextra ; et -Wbad-function-cast, je n'ai pas compris…

Dernière modification par Pylade (Le 27/12/2010, à 15:47)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#488 Le 27/12/2010, à 15:47

Elzen

Re : /* Topic des codeurs couche-tard [3] */

Et si vous expliquiez à quoi sert chaque option (en français et de façon plus user-friendly que dans le man), afin d'inciter les autres développeurs C à les utiliser également ? tongue

Hors ligne

#489 Le 27/12/2010, à 16:10

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Pylade a écrit :

C'est pour ça que ne l'ai pas ajouté mais que j'ai ajouté -Wold-style-definition. tongue

Arf, effectivement.
Mais j'ai du mal à voir son intérêt du coup…

-Wcast-align, j'ai dû mal comprendre, car je n'ai jamais réussi à recevoir un avertissement de sa part…

Peut-être que sur ton architecture (et la mienne apparemment) les contraintes d'alignement sont assez cool mais ce n'est pas le cas partout.
Perso je le mets pour garantir la portabilité (il y aura un warn si ça pose un problème sur certaines plateformes, ça ne passera pas inaperçu lors de la compilation pour planter violemment à l'exécution).

-Wshadow et -Wundef, j'ai regardé mais je n'ai pas trouvé ça utile.

Pour -Wshadow c'est que je n'aime pas jouer avec le masquage des noms de variables via leurs portées donc ça permet de me signaler mes erreurs d'attention (surtout avec les i, j, k,… c'est vite arrivé).
Pour -Wundef idem, c'est pour prévenir d'éventuelles étourderies avec le préprocesseur.

Donc, -Wfloat-equal, je l'ajoute tout de suite, suis étonné qu'il ne soit pas activé par -Wall ou -Wextra ; et -Wbad-function-cast, je n'ai pas compris…

Pour -Wfloat-equal, le problème c'est qu'il warn sur des tests contre HUGE_VAL (pour distinguer un overflow d'un underflow lorsque strtod positionne errno à ERANGE) par exemple. C'est peut-être pour ça qu'il n'est pas activé par défaut.
Pour -Wbad-function-cast, c'est si tu as la main un peu lourde niveau cast sur les retours de fonctions.



@ArkSeth : j'avais prévu de faire une page sur mon « site » pour expliquer mes réglages de compilo, j'avais même un peu commencé la rédaction mais j'ai plus ou moins laissé tomber par manque de temps. Je la finirais peut-être un jour…

Dernière modification par grim7reaper (Le 27/12/2010, à 16:16)

Hors ligne

#490 Le 27/12/2010, à 16:16

Pylades

Re : /* Topic des codeurs couche-tard [3] */

D'abord, -pedantic -Wall -Wextra, c'est absolument indispensable, ça active tous les avertissement sur les erreurs les plus grossières ; et ces avertissements ne sont pas susceptibles d'être indésirables.
-Wfloat-equal, ça avertit quand on utilise un opérateur d'égalité sur un flottant.
-Winit-self, ça avertit quand l'initialisation d'une variable dépend d'elle-même.
-Wformat=2, ça avertit quand tu passes des arguments louches à *printf ou *scanf.
-Wcast-qual, ça avertit quand tu convertis d'un type avec les qualificateurs const ou volatile vers un type qui ne les a pas.
-Wwrite-strings, en C, ça avertit si on référence une chaîne littérale avec un pointeur qui n'est pas de type const char* ; en C++ c'est activé par défaut.
-Wstrict-prototypes, en gros ça t'engueule (en C) si tu déclares ou définis une fonction du style int func() au lieu de int func(void).
-Wredundant-decls t'avertit si tu déclares une fonction plusieurs fois.


Voilà. wink


@grim7reaper : -Wold-style-definition, c'est au cas où je voudrais reprendre du code qui n'est pas de moi…

grim7reaper a écrit :

[…]
Pour -Wfloat-equal, le problème c'est qu'il warn sur des tests contre HUGE_VAL (pour distinguer un overflow d'un underflow lorsque strtod positionne errno à ERANGE) par exemple. C'est peut-être pour ça qu'il n'est pas activé par défaut.
[…]

C'est vrai que c'est un problème… hmm
Ça pourrait justifier un rapport de bug, non ? Il faudrait autoriser seulement si la comparaison est faite avec 0.0 ou HUGE_VAL


grim7reaper a écrit :

[…]
Pour -Wbad-function-cast, c'est si tu as la main un peu lourde niveau cast sur les retours de fonctions.
[…]

Très lourde, alors…

Dernière modification par Pylade (Le 27/12/2010, à 16:31)


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#491 Le 27/12/2010, à 16:33

Elzen

Re : /* Topic des codeurs couche-tard [3] */

Pylade a écrit :

-Winit-self, ça avertit quand l'initialisation d'une variable dépend d'elle-même.
-Wredundant-decls t'avertit si tu déclares une fonction plusieurs fois.

Il me semblait que cela le faisait par défaut (enfin, avec -Wall et -pedantic) yikes

Pylade a écrit :

-Wfloat-equal, ça avertit quand on utilise un opérateur d'égalité sur un flottant.

Plaît-il ? On a pas le droit de tester l'égalité entre deux flottants ? yikes

Pylade a écrit :

-Wformat=2, ça avertit quand tu passes des arguments louches à *printf ou *scanf.

Tu peux préciser ce que tu appelles louche ? yikes

Edit : Hm hmm
Pour ma calculatrice, je m'en tiendrai à -Wall -pedantic, avec -Wextra et -Wstrict-prototypes, 'y a tout le code yacc/flex qui râle affreusement. Et j'ai plein de fonctions appelées sur les signaux GTK qui râlent parce que je n'utilise pas les paramètres que j'suis obligé de leur passer mais qui ne m'intéressent pas.

Dernière modification par ArkSeth (Le 27/12/2010, à 16:41)

Hors ligne

#492 Le 27/12/2010, à 16:47

Pylades

Re : /* Topic des codeurs couche-tard [3] */

ArkSeth a écrit :
Pylade a écrit :

-Winit-self, ça avertit quand l'initialisation d'une variable dépend d'elle-même.
-Wredundant-decls t'avertit si tu déclares une fonction plusieurs fois.

Il me semblait que cela le faisait par défaut (enfin, avec -Wall et -pedantic) yikes

Et ben non.


ArkSeth a écrit :
Pylade a écrit :

-Wfloat-equal, ça avertit quand on utilise un opérateur d'égalité sur un flottant.

Plaît-il ? On a pas le droit de tester l'égalité entre deux flottants ? yikes

Disons qu'un flottant, on peut plus ou moins l'assimiler à une approximation d'un nombre. Et comparer l'égalité d'une approximation à quoi que ce soit, c'est moyen… Il vaut mieux regarder si l'écart est suffisamment petit à la place.


ArkSeth a écrit :
Pylade a écrit :

-Wformat=2, ça avertit quand tu passes des arguments louches à *printf ou *scanf.

Tu peux préciser ce que tu appelles louche ? yikes

man gcc a écrit :

       -Wformat=2
           Enable -Wformat plus format checks not included in -Wformat.
           Currently equivalent to -Wformat -Wformat-nonliteral
           -Wformat-security -Wformat-y2k.

       -Wformat
           Check calls to "printf" and "scanf", etc., to make sure that the
           arguments supplied have types appropriate to the format string
           specified, and that the conversions specified in the format string
           make sense.  This includes standard functions, and others specified
           by format attributes, in the "printf", "scanf", "strftime" and
           "strfmon" (an X/Open extension, not in the C standard) families (or
           other target-specific families).  Which functions are checked
           without format attributes having been specified depends on the
           standard version selected, and such checks of functions without the
           attribute specified are disabled by -ffreestanding or -fno-builtin.

           The formats are checked against the format features supported by
           GNU libc version 2.2.  These include all ISO C90 and C99 features,
           as well as features from the Single Unix Specification and some BSD
           and GNU extensions.  Other library implementations may not support
           all these features; GCC does not support warning about features
           that go beyond a particular library's limitations.  However, if
           -pedantic is used with -Wformat, warnings will be given about
           format features not in the selected standard version (but not for
           "strfmon" formats, since those are not in any version of the C
           standard).

           Since -Wformat also checks for null format arguments for several
           functions, -Wformat also implies -Wnonnull.

           -Wformat is included in -Wall.  For more control over some aspects
           of format checking, the options -Wformat-y2k,
           -Wno-format-extra-args, -Wno-format-zero-length,
           -Wformat-nonliteral, -Wformat-security, and -Wformat=2 are
           available, but are not included in -Wall.

           NOTE: In Ubuntu 8.10 and later versions this option is enabled by
           default for C, C++, ObjC, ObjC++.  To disable, use -Wformat=0.

       -Wformat-y2k
           If -Wformat is specified, also warn about "strftime" formats which
           may yield only a two-digit year.

       -Wformat-nonliteral
           If -Wformat is specified, also warn if the format string is not a
           string literal and so cannot be checked, unless the format function
           takes its format arguments as a "va_list".

       -Wformat-security
           If -Wformat is specified, also warn about uses of format functions
           that represent possible security problems.  At present, this warns
           about calls to "printf" and "scanf" functions where the format
           string is not a string literal and there are no format arguments,
           as in "printf (foo);".  This may be a security hole if the format
           string came from untrusted input and contains %n.  (This is
           currently a subset of what -Wformat-nonliteral warns about, but in
           future warnings may be added to -Wformat-security that are not
           included in -Wformat-nonliteral.)

           NOTE: In Ubuntu 8.10 and later versions this option is enabled by
           default for C, C++, ObjC, ObjC++.  To disable, use
           -Wno-format-security, or disable all format warnings with
           -Wformat=0.  To make format security warnings fatal, specify
           -Werror=format-security.

       -Wnonnull (C and Objective-C only)
           Warn about passing a null pointer for arguments marked as requiring
           a non-null value by the "nonnull" function attribute.

           -Wnonnull is included in -Wall and -Wformat.  It can be disabled
           with the -Wno-nonnull option.


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#493 Le 27/12/2010, à 16:49

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Pylade a écrit :

@grim7reaper : -Wold-style-definition, c'est au cas où je voudrais reprendre du code qui n'est pas de moi…

Ok, c'est pas con.

grim7reaper a écrit :

[…]
Pour -Wfloat-equal, le problème c'est qu'il warn sur des tests contre HUGE_VAL (pour distinguer un overflow d'un underflow lorsque strtod positionne errno à ERANGE) par exemple. C'est peut-être pour ça qu'il n'est pas activé par défaut.
[…]

C'est vrai que c'est un problème… hmm
Ça pourrait justifier un rapport de bug, non ? Il faudrait autoriser seulement si la comparaison est faite avec 0.0 ou HUGE_VAL

Et contre INFINITY, et NAN, et HUGE_VALF, etc.
Et puis le gros problème, c'est que se sont des directives de préprocesseurs donc quand le compilo passe les substitutions ont été faites. Il ne voit qu'une constante numérique comme les autres alors comment tu veux qu'il distingue le bien du mal dans ce cas-là ?

grim7reaper a écrit :

[…]
Pour -Wbad-function-cast, c'est si tu as la main un peu lourde niveau cast sur les retours de fonctions.
[…]

Très lourde, alors…

Oui, il faut vraiment y aller. C'est quand je reprends du code extérieur.



ArkSeth a écrit :
Pylade a écrit :

-Winit-self, ça avertit quand l'initialisation d'une variable dépend d'elle-même.
-Wredundant-decls t'avertit si tu déclares une fonction plusieurs fois.

Il me semblait que cela le faisait par défaut (enfin, avec -Wall et -pedantic) yikes

Pour la multi-déclaration de fonction, il le fait quand elles ont des prototypes différents (pour des prototypes identiques je n'ai pas testé, c'est peut-être là que -Wredundant-decls est utile, sachant que -Wredundant-decls ne se limite pas aux fonctions il me semble)

Pylade a écrit :

-Wfloat-equal, ça avertit quand on utilise un opérateur d'égalité sur un flottant.

Plaît-il ? On a pas le droit de tester l'égalité entre deux flottants ? yikes

Fortement déconseillé (dans n'importe quel langage) à cause des problèmes d'arrondis induits pas la représentation interne des des flottants (des fois ça fonctionne, des fois pas donc c'est pas portable).
Même combat pour le test de différence.
Normalement, pour ce genre de tests on peut utiliser une constante du genre EPSILON (fourni par le langage ou à définir soit même)

Pylade a écrit :

-Wformat=2, ça avertit quand tu passes des arguments louches à *printf ou *scanf.

Tu peux préciser ce que tu appelles louche ? yikes

Un pointeur de chaîne au lieu d'une chaîne littérale, plus d'arguments que de formats, etc.

Dernière modification par grim7reaper (Le 27/12/2010, à 16:51)

Hors ligne

#494 Le 27/12/2010, à 17:06

Pylades

Re : /* Topic des codeurs couche-tard [3] */

grim7reaper a écrit :

[…]

Pylade a écrit :
grim7reaper a écrit :

Pour -Wfloat-equal, le problème c'est qu'il warn sur des tests contre HUGE_VAL (pour distinguer un overflow d'un underflow lorsque strtod positionne errno à ERANGE) par exemple. C'est peut-être pour ça qu'il n'est pas activé par défaut.
[…]

C'est vrai que c'est un problème… hmm
Ça pourrait justifier un rapport de bug, non ? Il faudrait autoriser seulement si la comparaison est faite avec 0.0 ou HUGE_VAL

Et contre INFINITY, et NAN, et HUGE_VALF, etc.
Et puis le gros problème, c'est que se sont des directives de préprocesseurs donc quand le compilo passe les substitutions ont été faites. Il ne voit qu'une constante numérique comme les autres alors comment tu veux qu'il distingue le bien du mal dans ce cas-là ?
[…]

(Et HUGE_VALL. tongue)
Et bien il peut tout simplement regarder si la constante avec laquelle le flottant est comparé est égale à ces constantes particulières…
Mais je viens de voir que ces constantes n'étaient définies que dans C99, c'est grave, ça ?


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#495 Le 27/12/2010, à 18:14

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Pylade a écrit :

Et bien il peut tout simplement regarder si la constante avec laquelle le flottant est comparé est égale à ces constantes particulières…

Mouais, j'y ai pensé mais il y a un petit quelque chose qui me dérange. Je n'arrive pas à mettre le doigt dessus mais ce n'est peut-être rien au final.
Pour un rapport de bug, ouais pourquoi pas (il faut vérifier que personne n'a soulevé le problème avant).

Mais je viens de voir que ces constantes n'étaient définies que dans C99, c'est grave, ça ?

Pas toutes, en tout cas HUGE_VAL est correcte en C89 (je n'ai pas de warnings ou d'erreur à ce niveau là)

Hors ligne

#496 Le 27/12/2010, à 18:40

Pylades

Re : /* Topic des codeurs couche-tard [3] */

Oui, après tests, chez moi en C89 je n'ai que HUGE_VAL, et les quatre autres en C99. Le man n'est pas clair. tongue


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#497 Le 27/12/2010, à 18:45

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

Il donnent quand même une indication comme quoi HUGE_VAL est un peu différente des autres tongue

man INFINITY a écrit :

On a glibc system, the macro HUGE_VAL is always available.

Dernière modification par grim7reaper (Le 27/12/2010, à 18:46)

Hors ligne

#498 Le 27/12/2010, à 19:41

Pylades

Re : /* Topic des codeurs couche-tard [3] */

grim7reaper a écrit :

Il donnent quand même une indication comme quoi HUGE_VAL est un peu différente des autres tongue

man INFINITY a écrit :

On a glibc system, the macro HUGE_VAL is always available.

Ah, oui. Je n'avais pas regardé dans le man de la glibc, mais dans un générique (qui parle en plus de POSIX), c'est pour ça. Du coup, je trouve ça louche que C89 ne définisse pas HUGE_VAL, alors que strtod qui est définie dans C89 est sensée renvoyer HUGE_VAL. Ça mérite des investigations futures…


ArkSeth a écrit :

[…]
Edit : Hm hmm
Pour ma calculatrice, je m'en tiendrai à -Wall -pedantic, avec -Wextra et -Wstrict-prototypes, 'y a tout le code yacc/flex qui râle affreusement. Et j'ai plein de fonctions appelées sur les signaux GTK qui râlent parce que je n'utilise pas les paramètres que j'suis obligé de leur passer mais qui ne m'intéressent pas.

Et si tu utilisais ça à la place de Yacc ? Il semblerait que tu ne sois pas obligé de réécrire le code…


Sinon, j'ai aussi trouvé ça, très intéressant…


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne

#499 Le 27/12/2010, à 19:45

grim7reaper

Re : /* Topic des codeurs couche-tard [3] */

ArkSeth a écrit :

Edit : Hm hmm
Pour ma calculatrice, je m'en tiendrai à -Wall -pedantic, avec -Wextra et -Wstrict-prototypes, 'y a tout le code yacc/flex qui râle affreusement. Et j'ai plein de fonctions appelées sur les signaux GTK qui râlent parce que je n'utilise pas les paramètres que j'suis obligé de leur passer mais qui ne m'intéressent pas.

Au pire, il y a moyen de « berner le warning ». C'est dommage de ce priver d'une bonne option pour ça…



Pylade a écrit :

Sinon, j'ai aussi trouvé ça, très intéressant…

Tu viens de la découvrir O_o" ?
Elle est super connu (et utilisé par Python et Haskell, entre autres, en interne)

Dernière modification par grim7reaper (Le 27/12/2010, à 19:49)

Hors ligne

#500 Le 27/12/2010, à 19:48

Pylades

Re : /* Topic des codeurs couche-tard [3] */

Ben ouais…

Maintenant je comprends pourquoi Python est si bon avec les maths, en interne…


“Any if-statement is a goto. As are all structured loops.
“And sometimes structure is good. When it’s good, you should use it.
“And sometimes structure is _bad_, and gets into the way, and using a goto is just much clearer.”
                Linus Torvalds – 12 janvier 2003

Hors ligne