Bonjour,
J'ai ce message de gcc alors que j'aiau debut de mon fichier. Est ce normal ? Car je ne vois pas ou peut etre mon erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <stdio.h>
Bonjour,
J'ai ce message de gcc alors que j'aiau debut de mon fichier. Est ce normal ? Car je ne vois pas ou peut etre mon erreur...
Code : Sélectionner tout - Visualiser dans une fenêtre à part #include <stdio.h>
Salut, visiblement, c'est pas standard
Peut etre qu'en -ansi ça ne passe pas donc
tu compiles en -ansi ?
fileno n'est pas une fonction C standard à ma connaissance, c'est une fonction POSIX.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Oui, cela fait partie de la gnu c lib. Et je compile en C99. (sous linux, POSIX compatible donc.)
Aucun rapport ! La norme ansi n'interdit pas d'utiliser d'autres fonctions que celle spécifier dans la norme.Envoyé par Gruik
Il faut juste ajouter -D__USE_POSIX aux options de gcc pour inclure le prototype des fonctions posix![]()
C'est bien ce que je pensais. Un header est un header quel que soit la norme.Envoyé par gege2061
Une option du compilateur, je n'y aurais jamais pensé. Merci, je testerais des que possible. Puis je fermerais la discussion.Envoyé par gege2061
Par contre, une question. Si on regarde les docs, la declaration de fileno est dans stdio.h. stdio.h contient les declarations des fonctions "std" mais devrait aussi contenir celle-ci.
Cette option est pratique mais je ne comprends pas pourquoi. Il y a une raison technique ?
Le C ANSI (ou C99 dans ton cas) ne l'interdit pas, mais le flag -ansi ou -std=c99 te force à n'utiliser que les fonctions de ces standards là, au cas où tu voudrais porter ton soft sur une autre plateforme strictement C99
Je pense que faire des -D c'est de la bidouille, si tu utilises plus que les fonctions du C99, passe en GNU99 et mets le flag -pedantic pour t'assurer qu'au moins au niveau de la syntaxe c'est conforme C99
C'est plutot génant pour créer tes propres fonctionsEnvoyé par Gruik
Dans ce cas pourquoi il n'y a aucun problème avec GTK+ ?
Bah ça force à faire attention, mais si tu as une autre solution...Envoyé par Gruik
Parce que GTK+ est une bibliothèque, il ne doit donc pas y avoir de #ifndef __STDC__ et #ifndef STRICT_ANSI dans ses headers, contrairement aux headers standard dont les extensions sont entourées de tels tests...Envoyé par gege2061
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Oui, quand je disais "te force à n'utiliser que les fonctions de ces standards", je parlais des fonctions qui sont dans la libc (du compilateur)
Faire un -D, ce n'est pas de la bidouille, c'est le moyen officiel d'activer les definitions de posix. Mais il faut faire -D_POSIX_C_SOURCE=200112L.Envoyé par Gruik
D'accord, je vais me cacher
N'empeche, j'aurais préféré que ça soit configurable proprement avec des vraies options du compilateur (-std)
A la place du -D, on peut faire un #define en tete de ses sources. C'est assez difficile de faire la meme chose avec les options du compilateur.
-D__USE_POSIX ne fonctionne effectivement pas.![]()
Par contre -D_POSIX_C_SOURCE=200112L si.
Cependant, il y a t il une raison au 200112L? (2001/12/-- ?)
Car en general une simple definition sans valeur fonctionne. Et c'est le cas ici.
2001/12, date de la derniere version de POSIX a ma connaissance. Sans date, je ne sais pas ce que ca fait precisement, vraissemblablement la premiere version (encore qu'il me semble que la premiere version utilisait _POSIX_SOURCE et pas _POSIX_C_SOURCE).Envoyé par TabrisLeFol
Partager