Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  C

  C99, gcc et flags de compilation

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C99, gcc et flags de compilation

n°1662486
xav14
Posté le 22-12-2007 à 23:26:18  profilanswer
 

Bonjour,
 
Je vais me lancer dans un projet d'émulateur (de mips rX000 pour ne pas le nommer, le but étant de booter un bios sgi, ca sera déjà bien) et avant de foncer tête baissée, j'aurais voulu savoir les options de compilation de GCC pour avoir du code le plus "propre" possible, comprendre pas de spécifique gnu/x86/windows (je mélange tout mais en gros c'est faire du code portable avec le minimum d'effort).
 
Pour l'instant je suis tombé là-dessus :  
 
(FreeBSD)
-W -Wall -ansi -pedantic -Wbad-function-cast -Wcast-align -Wcast-qual -Wchar-subscripts -Winline -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wredundant-decls -Wshadow -Wstrict-prototypes -Wwrite-strings
 
(Perl)
-pedantic -Wall -W -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wno-long-long
 
Ces exemples (de là : http://peter.hates-software.com/20 [...] 0cefa.html) ne tiennent pas compte du c99 et datent de 2003 et il n'y a pas moyen de trouver un bout de discussion plus récent que ça.
Si quelqu'un a une idée pour me guider ...
 
Merci.


Message édité par xav14 le 22-12-2007 à 23:26:42
mood
Publicité
Posté le 22-12-2007 à 23:26:18  profilanswer
 

n°1662500
Taz
bisounours-codeur
Posté le 23-12-2007 à 00:25:03  profilanswer
 

-Wall -std=c99
 
ne compte par sur des warnings pour faire du code portable.

n°1662507
xav14
Posté le 23-12-2007 à 00:56:38  profilanswer
 

:jap:
 
J'ai un peu navigué sur quelques site de dév, et ca reste rare des règles de bonne conduite (je parle pas de celles du projet mozilla qui sont *hum* sévères). Et pas sûr de trouver mon bonheur dans un quelconque bouquin.

n°1662515
Taz
bisounours-codeur
Posté le 23-12-2007 à 02:31:09  profilanswer
 

si tu lis le K&R si c'est déjà pas mal. Ce qui est important, c'est de saisir l'élégance du C pour comprendre ce qui n'est indéfinie.
 
Petit exemple de crasse:

Code :
  1. short foo(const char *x)
  2. {
  3.   return *(short*)x;
  4. }

ça n'a l'air de rien mais ça peut faire du mal (problème d'alignements, sans même parler d'endianess).

n°1662521
xav14
Posté le 23-12-2007 à 04:31:59  profilanswer
 

J'ai pris le parti de tout passer en int (signed ou unsigned) pour éviter justement les problèmes d'alignement, déjà que le mips à la base c'est du little-endian ...
Par contre, je sais pas s'il y a une bonne manière de connaitre l'endianness de la plate-forme sur laquelle le programme tourne (à part le tester moi-même en remplissant un int avec des char)

Message cité 1 fois
Message édité par xav14 le 23-12-2007 à 04:38:28
n°1662566
Joel F
Real men use unique_ptr
Posté le 23-12-2007 à 12:28:46  profilanswer
 

xav14 a écrit :


(je parle pas de celles du projet mozilla qui sont *hum* sévères).


Faut dire aussi qu'elles datente de Mamie Zalem ... et qu'elle contiennent 90% de bétises crasses de gens
pas doués qui ne comprennaient pas pourquoi leur code foirait et qui donc on préférer interdire certaines pratiques.
 

xav14 a écrit :


Par contre, je sais pas s'il y a une bonne manière de connaitre l'endianness de la plate-forme sur laquelle le programme tourne (à part le tester moi-même en remplissant un int avec des char)


 
Au runtime, non, à part qqs fonctions OS-specific pas portables.
Au compile-time, autoconf le fait.

n°1662581
xav14
Posté le 23-12-2007 à 13:53:16  profilanswer
 

Joel F a écrit :


Faut dire aussi qu'elles datente de Mamie Zalem ... et qu'elle contiennent 90% de bétises crasses de gens
pas doués qui ne comprennaient pas pourquoi leur code foirait et qui donc on préférer interdire certaines pratiques.


 
un peu comme à mon boulot en fait  :whistle:  
 

Joel F a écrit :


Au runtime, non, à part qqs fonctions OS-specific pas portables.
Au compile-time, autoconf le fait.


 
erf, autoconf, jamais touché, ça me fait peur tous ces outils gnu  [:totoz]

n°1662585
Joel F
Real men use unique_ptr
Posté le 23-12-2007 à 14:33:52  profilanswer
 

autoconf, c'ets le moins pire de tous. Pour mes soft, j'ai arreté de deviner au nez. Autofonc et zou.

n°1662586
xav14
Posté le 23-12-2007 à 14:36:25  profilanswer
 

Il ne me reste plus qu'à trouver un tuto/bouquin pas trop mal fait pour attaquer ça :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  C99, gcc et flags de compilation

 

Sujets relatifs
[c++][resolu]Problème de compilation.souci de compilation en java
souci de compilation sur dev c++probléme de compilation avec code::blocks
Compilation et execution sous DEV-C++Compilation avec Code::Blocks
Probleme de compilationprobleme lors de compilation module manquant
Compilation en C/C++[Résolu] Problème de compilation Qt
Plus de sujets relatifs à : C99, gcc et flags de compilation


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR