[gcc] parse errors

Le
gg
Bonjour,

j'essaye de compiler un source en c avec gcc founit par Cygwin.
Malheureusement, j'obtiens pas mal de "parse errors" sur des noms de
variables contenant des underscores "_" dans les fichiers "include" de base
(par ex: __gid32_t dans socket.h).

Auriez-vous une idée de comment résoudre ce pb ? Est-il lié à des librairies
qu'il faudrait inclure ? des options à préciser dans gcc ?

Merci d'avance de votre aide,

gg
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vincent Lefevre
Le #984355
Bonjour,

Dans l'article gg
j'essaye de compiler un source en c avec gcc founit par Cygwin.
Malheureusement, j'obtiens pas mal de "parse errors" sur des noms de
variables contenant des underscores "_" dans les fichiers "include" de base
(par ex: __gid32_t dans socket.h).

Auriez-vous une idée de comment résoudre ce pb ? Est-il lié à des librairies
qu'il faudrait inclure ? des options à préciser dans gcc ?


On n'inclut pas une librairie, mais un en-tête. Ces "parse errors"
indiquent probablement quelque chose qui n'est pas défini. Cela peut
être un #include manquant, ou un -std avec une mauvaise valeur dans la
ligne de commande de gcc, ou des variables d'environnement incorrectes
(comme CPATH ou C_INCLUDE_PATH).

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

espie
Le #984353
In article

Bonjour,

j'essaye de compiler un source en c avec gcc founit par Cygwin.
Malheureusement, j'obtiens pas mal de "parse errors" sur des noms de
variables contenant des underscores "_" dans les fichiers "include" de base
(par ex: __gid32_t dans socket.h).

Auriez-vous une idée de comment résoudre ce pb ? Est-il lié à des librairies
qu'il faudrait inclure ? des options à préciser dans gcc ?


C'est pas un probleme d'underscore, c'est un probleme de source non portable.

De ce que tu dis, c'est du source prevu pour un linux ou assimile qui se
contente d'inclure socket.h tout seul. Manque de bol, il faut aussi
inclure types.h pour que ca marche... C'est un gros classique:
types.h contient les typedef qui vont bien, ceux-ci sont isoles dans un
__machin (style __gid32_t) pour eviter que ca soit visible dans le code
utilisateur, puis socket.h s'en sert, soit pour definir des structures,
soit pour rendre le typedef visible.

Il y a deux ecoles: ceux qui pensent que tous les entetes doivent etre
auto-suffisants, et les autres... je fais plutot partie des autres, pour
m'etre fait mal au crane a essayer de rendre exactement visible ce qui
doit l'etre dans des entetes C ISO.

Bref, remplace ton
#include par un
#include #include et ca devrait resoudre CE probleme-la.

Mais bon, la route a des chances d'etre longue et difficile. Si tu es
bloque sur un petit truc relativement basique en essayant de compiler
un programme pas vraiment porte sur un systeme qui se prend pour un unix
mais sans plus, tu peux t'attendre a avoir d'autres problemes plus
subtils a resoudre...

gg
Le #984275
"Marc Espie" eupd35$65$
In article wrote:

Bonjour,

j'essaye de compiler un source en c avec gcc founit par Cygwin.
Malheureusement, j'obtiens pas mal de "parse errors" sur des noms de
variables contenant des underscores "_" dans les fichiers "include" de
base
(par ex: __gid32_t dans socket.h).

Auriez-vous une idée de comment résoudre ce pb ? Est-il lié à des
librairies
qu'il faudrait inclure ? des options à préciser dans gcc ?


C'est pas un probleme d'underscore, c'est un probleme de source non
portable.

De ce que tu dis, c'est du source prevu pour un linux ou assimile qui se
contente d'inclure socket.h tout seul. Manque de bol, il faut aussi
inclure types.h pour que ca marche... C'est un gros classique:
types.h contient les typedef qui vont bien, ceux-ci sont isoles dans un
__machin (style __gid32_t) pour eviter que ca soit visible dans le code
utilisateur, puis socket.h s'en sert, soit pour definir des structures,
soit pour rendre le typedef visible.

Il y a deux ecoles: ceux qui pensent que tous les entetes doivent etre
auto-suffisants, et les autres... je fais plutot partie des autres, pour
m'etre fait mal au crane a essayer de rendre exactement visible ce qui
doit l'etre dans des entetes C ISO.

Bref, remplace ton
#include par un
#include #include et ca devrait resoudre CE probleme-la.

Mais bon, la route a des chances d'etre longue et difficile. Si tu es
bloque sur un petit truc relativement basique en essayant de compiler
un programme pas vraiment porte sur un systeme qui se prend pour un unix
mais sans plus, tu peux t'attendre a avoir d'autres problemes plus
subtils a resoudre...


Merci pour la réponse.
sys/types.h est en fait inclus juste au dessus.

En fait la question sous-jacente est : est-il possible de compiler un source
linux pour windows via Cygwin ?

gg


Vincent Lefevre
Le #984263
Dans l'article gg
En fait la question sous-jacente est : est-il possible de compiler
un source linux pour windows via Cygwin ?


Tout dépend du source, e.g. s'il n'utilise que des fonctionnalités
POSIX, ou s'il utilise des spécificités de Linux.

--
Vincent Lefèvre 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arenaire project (LIP, ENS-Lyon)

Publicité
Poster une réponse
Anonyme