Option de compilation
Discutez d'informatique ici !
-
Rockleader
- Habitué(e)
- Messages: 2126
- Enregistré le: 11 Oct 2011, 18:42
-
par Rockleader » 04 Mar 2014, 11:09
Bonjour, au cours de l'un de nos cours de système; notre prof nous as fait créer un alias pour qu'en utilisant Gcc; on utilise tous les options sans les écrire (c.à.d -Wall -Werror etc etc).
J'ai décidé de garder cet alias tel quel; en me disant que cela ne pourrait apporter que de la rigueur au codage.
Toutefois, je maperçois de quelques points curieux sur lesquels j'aimerais vos avis.
Par exemple, l'écriture de commentaire court du type //commentaire n'est pas autorisé; il faut toujours mettre /*commentaire*/
Ici ce nest pas particulièrement gênant me direz vous.
Mais il y a un autre cas bien plus problématique concernant la déclaration des variables.
Toutes les variables doivent être déclarées au début du programme. Donc si j'utilise la variable compteur k à la ligne 160 elle doit quand même être déclaré dans les premières lignes. Je pensais que le mieux c'était de déclarer une variable au plus près de son utilisation; me trompais-je ?
Une conséquence directe de cette contrainte est également l'affectation
int k=0; nest plus valide et devra être écris
int k;
k=0;
Ce qui nest pas super non plus je trouve.
Donc au final; ces normes ISO sont elles réellement adéquates à la programmation ? Est il mieux de les appliquer ou non ?
======================================================================
Tout autre problème ici, on attaque en tp une partie concernant les pointeurs de fonctions; et j'avoue qu'au niveau de la syntaxe je me suis un peu laissé larguer.
J'ai compris le principe cela permettra l'appeler plusieurs fonctions différentes grâce à un pointeur unique; mais je ne saurais pas l'écrire.
Admettons que je veuille créer une fonction fct2 qui prenne en paramètre un entier signé donc un int et un pointeur de fonction.
Les fonctions passé en paramètres par le pointeur devront toutes être de la même forme si j'ai bien compris
admettons que ce type de fonction soit
type fct(type1 T1, Type2 T2)
COmment je dois déclarer fct2 pour qu'elle prenne en paramètres des pointeur de fonction de la même forme que fct ?
Merci à vous !
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 04 Mar 2014, 11:16
Donc au final; ces normes ISO sont elles réellement adéquates à la programmation ? Est il mieux de les appliquer ou non ?
Ne pas respecter la norme c est s exposer a des comportements indefinis.
Tu peux choisir d ignorer les warnings, mais c est deja foireux. Ignore les seulement si tu sais ce que tu fais (mais generalement c est pas bon)
Quant a ton probleme, ben ca depend de la version de C que t utilises... ansi,99...
Concernant tes pointeurs de fonctions, tu as qu as lire un cours..
la vie est une fête

-
ampholyte
- Membre Transcendant
- Messages: 3940
- Enregistré le: 21 Juil 2012, 07:03
-
par ampholyte » 04 Mar 2014, 11:21
Bonjour,
1) Tu dois indiquer au compilateur que tu utilises la norme C99. Il faut que tu rajoutes l'option :
- Code: Tout sélectionner
-std=gnu99
2) Rien ne vaut un exemple d'utilisation. Prenons la fonction qsort qui permet de trier un tableau à partir d'une fonction passée en paramètre.
La fonction qsort a le prototype suivant :
- Code: Tout sélectionner
void qsort (void *tableau,
size_t nb_elem,
size_t taille_elem,
int (*compare) (void const *a, void const *b));
Supposons que l'on travaille sur un tableau de int, on a besoin de définir la fonction de tri.
- Code: Tout sélectionner
int compare_int(void const *a, void const *b) {
int const *pa = a;
int const *pb = b;
return *pa - *pb;
}
On appelle la fonction de la manière suivante :
- Code: Tout sélectionner
int tab[10] = {3, 2, 1, 5, 6, 8, 9, 11, 12, 10};
qsort(tab, 10, sizeof(int), compare_int);
Est-ce plus clair ?
-
Rockleader
- Habitué(e)
- Messages: 2126
- Enregistré le: 11 Oct 2011, 18:42
-
par Rockleader » 04 Mar 2014, 11:37
Est-ce plus clair ?
Oui bien plus merci !!!
Tu peux choisir d ignorer les warnings, mais c est deja foireux.
Sachant que tous les warnings sont considérés comme des erreurs j'aurais du mal à passer outre quoi qu'il en soit :d
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités