CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Mode parano de gcc ?

Walax
Walax
Niveau 3
18 janvier 2011 à 17:30:29

Salut, j'ai entendu parler d'un mode de compilation pour gcc qui se nommerait le mode parano ou paranoia en anglais, je ne sais pas exactement ce que je sais, et j'aimerais si l'un d'entre vous connaissait ce mode ?
Merci

godrik
godrik
Niveau 30
18 janvier 2011 à 17:37:48

il n'y a pas vraiment de mode paranoiaque. Globalement les gens utilisent "-W -Werror -Wall -pedantic --std=XXX" avec la bonne norme. Si tu ecris du code C. les outils de type lint sont souvent les plus parano que tu puissent avoir (splint typiquement sous linux)

Walax
Walax
Niveau 3
18 janvier 2011 à 17:45:28

Ok je vois, merci bien.

chris_27
chris_27
Niveau 10
18 janvier 2011 à 18:00:17

Je ne suis pas convaincu par -Werror. Par contre, -Wextra est sympa.

Walax
Walax
Niveau 3
18 janvier 2011 à 18:18:17

Ma ligne de compil a toujours cette tete
-W -Wall -Werror -Wextra -Wstrict-prototypes -pedantic -ansi
Donc c'est bon =)

dnob700
dnob700
Niveau 10
22 janvier 2011 à 17:05:17

Pour avoir un mode vraiment parano de gcc, j'utilise splint. C'est un analyseur static de code qui peut être un peu soupe au lait si tu le lui demande. Par exemple, voici un bout de Makefile (la mise en page va être détruite) :

CC = gcc
CPPFLAGS =
CFLAGS = -std=c99 -pedantic-errors -Wall -Wextra -Werror -g -O3

LINT = splint
LINTFLAGS = +iso-lib +expect 0 +strict -sizeof-type +iso99-limits

SED = sed
TOUCH = touch

%.o: %.c %.ok
$(CC) $(CPPFLAGS) $(CFLAGS) -c $<

%.ok: %.inc
$(LINT) $(CPPFLAGS) $(LINTFLAGS) $*.c
$(TOUCH) $@

%.inc: %.c
$(CC) -MM $(CPPFLAGS) -MF $@ $<
$(SED) 's,\($*\)\.o[ :]*,\1.o $@ : ,g' -i $@

Avec ça, gcc ne compile un fichier que si splint a d'abord dit que le fichier était OK (et les options là le rende vraiment paranoïaque). Tu peux négliger la partie *.inc" c'est juste pour gérer les dépendance de compilation.

Je ne suis pas sûr qu'il y a beaucoup de programme qui peuvent être compilé comme ça cependant.

chris_27
chris_27
Niveau 10
22 janvier 2011 à 17:19:47

-O3 :d) c'est très dangereux ça. Tu devrais te contenter de -O2 qui optimise pratiquement aussi bien et qui conserve la sémantique du programme.

Sinon, je ne connaissais pas splint. Il faut que je jète un coup d'œil à cet outil.

caelacanthe
caelacanthe
Niveau 10
22 janvier 2011 à 19:59:42
  1. Chris_27 Voir le profil de Chris_27
  2. Posté le 22 janvier 2011 à 17:19:47 Avertir un administrateur
  3. -O3 :d) c'est très dangereux ça. Tu devrais te contenter de -O2 qui optimise pratiquement aussi bien et qui conserve la sémantique du programme.

:d) quand je compile avec gcc, je met -O1 -O2 -O3, comme ils m'ont appris à l'école! :bave:

... pourquoi O3 est dangereux? :(

dnob700
dnob700
Niveau 10
22 janvier 2011 à 20:11:37

" :d) quand je compile avec gcc, je met -O1 -O2 -O3, comme ils m'ont appris à l'école! :bave: "

Ça par contre c'est très mauvais, parce qu'il n'y a que le dernier que tu mets qui comptes. Donc si tu change l'ordre en pensant que ça fait la même chose parce que tu active des switch, et bien ce n'est pas vrai du tout.

Pour le 03, Chris a raison, c'est qu'il y a certaine optimisation qui sont faites par le compilateur qui peuvent modifier la manière dont le programme se comporte. Je n'ai pas d'idée d'exemple simple sous la main, sauf des choses liées à du calcul flottant. Peut-être que chris a un bon exemple de choses qui peuvent merdées.

Walax
Walax
Niveau 3
25 janvier 2011 à 16:36:06

J'ai essaye splint, mais le probleme est que tu es apparement oblige de mettres tes sources (dans mon cas les .c) et les includes (mes .h) dans le meme dossier ! Ce qui n'est pas du tout pratique vous en conviendrez !

godrik
godrik
Niveau 30
25 janvier 2011 à 16:58:25

De memoire splint prends un fichier c en parametre et dispose des memes options que gcc (-I) pour decrire les repertoires d'inclusion.

kufa
kufa
Niveau 9
25 janvier 2011 à 23:09:35

cpp-check est assez sympa aussi, et moins chiant (moins performant?) a configurer que lint, imo.
http://sourceforge.net/projects/cppcheck/

Walax
Walax
Niveau 3
26 janvier 2011 à 09:59:06

Que pour du C++ ?

kufa
kufa
Niveau 9
31 janvier 2011 à 00:39:34

C/C++ only oui.

godrik
godrik
Niveau 30
31 janvier 2011 à 00:50:22

J'ai regarde cppcheck et ca ne sert pas a grand chose IMHO. Je l'ai lance avec toutes les options sur un code de 10kloc ecrit relativement a l'arrache et j'ai eu 5 messgae de "ca c'est pas bien". juste gcc -O2 m'en donne 3 fois plus.

Sangoku
Sangoku
Niveau 10
31 janvier 2011 à 01:08:20

tant qu'on y est , je cherche une alternatif a la lib Electric Fence , vous en connaissez ? (c'est pour sensibiliser les debordements de memoires qui conduit directement a un seg fault. )

godrik
godrik
Niveau 30
31 janvier 2011 à 06:58:56

lib duma ?

Sangoku
Sangoku
Niveau 10
31 janvier 2011 à 19:27:34

merci

kufa
kufa
Niveau 9
31 janvier 2011 à 22:30:42

@godrik: perso je prefere aussi gcc, mais bon, on peut pas utiliser gcc pour toutes les platformes ;)
Il a des trucs que cppcheck fait et pas gcc, enfin a ma connaissance, style invalid usage de la STL. Mais c'est vraiment une question de gouts, je tourne uniquement avec -Wall / -W<extra> et -Werror et +brain_on, ca me suffit largement =)

godrik
godrik
Niveau 30
01 février 2011 à 18:37:38

Le seul truc cool que cppchecker a reperer etait un champ non initialise dans un constructeur. En vrai, il n'est pas initialiser parce que je m'en fout dans ce constructeur. Mais ca peut etre utile.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment