Salut les C,
je me suis fait une petite liste de questions que j'aimerai poser plus ou moins importantes.
1. Compilation avec option d'optimisation.
Quand on ajoute l'option -O2 a la ligne de compilation que ce passe-t-il ?
Le compilateur essaie de produire du code optimisé si je me trompe pas.
Mais en quels termes ce code est optimisé ?
Est-ce dangereux ? Car si l'on compile avec l'option -O2 le programme aura-t-il plus de chance de crasher ou de mal se comporter ?
2. Variables globales.
Je sais qu'il faut les éviter mais dès fois c'est nécessaire:
je pense a une application GTK+3 ou l'on ne peut passer qu'un seule pointeur en argument aux callback et c'est donc pratique d'avoir une variable globale comme celle-ci:
Mais le problème vient a la compilation car si je veut faire une compilation en passant par des fichiers objets (*.o) cela m'est impossible pour toute fonction qui utilise la variable globale, impossible d'inclure un en-tête et compiler un fichier objet global_vars.c ne fonctionne pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <gtk/gtk.h> typedef struct { GtkWidget *button ; GtkWidget *label ; // etc.. } GUI ; GUI pgui ; GUI gui = &pgui ; int main(int argc, char *argv[]) { return 0 ; }
3. qualificateur const.
Il ma été dit qu'il été inutile de déclarer un argument de fonction comme constant car il est passer par copie ???
4. return nécessaire.
Il m'a également dit qu'il était inutile de mettre un return a la fin d'une fonction renvoyant void ???
5. valeur de retour dans un #define.
Est il possible de faire retourner une valeur dans une définition ?
Je pense a quelque chose comme cela:
Personnellement je n'y arrive pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define GET_NUM ({ do { return 1 ; } while(0) ; })
6. exec()
Est-il possible de récupérer la stdout, stderr d'un appel a la famille exec(...) ou autre fonction exécutant une commande dans le terminal ?
Merci pour vos réponses éclairées.
Partager