Je ne sais pas trop si ma question a sa place ici mais comme a priori elle
ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c"
pour des raisons historiques, je ne sais pas si cela a la moindre
importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h>
#include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le
fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C"
Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Loïc Joly
Seb wrote:
Bonjour,
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c" pour des raisons historiques, je ne sais pas si cela a la moindre importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h> #include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C" Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
J'ai l'impression que tu essaie de compiler du code spécifique à un environnement dans un autre environneemnt pour lequel il n'a pas été prévu. <sys/cdefs.h> et <sys/types.h> ne sont pas des headers standard en C++.
-- Loïc
Seb wrote:
Bonjour,
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle
ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c"
pour des raisons historiques, je ne sais pas si cela a la moindre
importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h>
#include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le
fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C"
Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
J'ai l'impression que tu essaie de compiler du code spécifique à un
environnement dans un autre environneemnt pour lequel il n'a pas été
prévu. <sys/cdefs.h> et <sys/types.h> ne sont pas des headers standard
en C++.
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c" pour des raisons historiques, je ne sais pas si cela a la moindre importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h> #include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C" Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
J'ai l'impression que tu essaie de compiler du code spécifique à un environnement dans un autre environneemnt pour lequel il n'a pas été prévu. <sys/cdefs.h> et <sys/types.h> ne sont pas des headers standard en C++.
-- Loïc
espie
In article <brneh1$nm4$, Seb wrote:
Bonjour,
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c" pour des raisons historiques, je ne sais pas si cela a la moindre importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h> #include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C" Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
Non, je n'ai jamais eu ce genre de problemes, par contre, je vois tres bien ce qui t'arrive.
Sur certains systemes, __BEGIN_DECLS sert a `proteger' les declarations de fonctions dans les entetes pour pouvoir s'en servir en C++.
C'est cense devenir plus ou moins; #ifdef __cplusplus #define __BEGIN_DECLS extern "C" { #define __END_DECLS } #else #define __BEGIN_DECLS #define __END_DECLS #endif
Ca permet de parentheser une serie de prototypes comme suit: __BEGIN_DECLS extern void f(int); extern int g(void); __END_DECLS
Et hop, on a des fonctions C avec les conventions d'appel de C, meme en C++.
Dans ton cas, visiblement, ton environnement de developpement compile un fichier .c comme un fichier, mais definit quand meme la macro __cplusplus (oh le vilain), d'ou le probleme, vu que extern "C" { ne veut rien dire en C...
De plusieurs choses l'unes: - soit tu as un fichier d'entete qui fait un #define __cplusplus errone; - soit tu as une definition de __cplusplus qui traine dans un Makefile ou assimile; - soit ton compilo est VRAIMENT buggue et definit __cplusplus meme quand tu compiles du C; - soit tu as une fonctionnalite de type `entetes pre-compiles' qui fonctionne de maniere aberrante (ou dont tu as mal lu la doc) et qui a defini un jour __cplusplus et qui relit le meme fichier d'entetes rapidement sans se preoccuper de savoir si elle devrait s'inquieter de la definition de C++.
Voila pour le diagnostic precis... pour la solution, c'est a toi de voir.
In article <brneh1$nm4$1@s1.read.news.oleane.net>,
Seb <nospam@yahoo.net> wrote:
Bonjour,
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle
ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c"
pour des raisons historiques, je ne sais pas si cela a la moindre
importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h>
#include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le
fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C"
Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
Non, je n'ai jamais eu ce genre de problemes, par contre, je vois tres
bien ce qui t'arrive.
Sur certains systemes, __BEGIN_DECLS sert a `proteger' les declarations
de fonctions dans les entetes pour pouvoir s'en servir en C++.
C'est cense devenir plus ou moins;
#ifdef __cplusplus
#define __BEGIN_DECLS extern "C" {
#define __END_DECLS }
#else
#define __BEGIN_DECLS
#define __END_DECLS
#endif
Ca permet de parentheser une serie de prototypes comme suit:
__BEGIN_DECLS
extern void f(int);
extern int g(void);
__END_DECLS
Et hop, on a des fonctions C avec les conventions d'appel de C, meme en
C++.
Dans ton cas, visiblement, ton environnement de developpement compile un
fichier .c comme un fichier, mais definit quand meme la macro __cplusplus
(oh le vilain), d'ou le probleme, vu que extern "C" { ne veut rien dire
en C...
De plusieurs choses l'unes:
- soit tu as un fichier d'entete qui fait un #define __cplusplus errone;
- soit tu as une definition de __cplusplus qui traine dans un Makefile ou
assimile;
- soit ton compilo est VRAIMENT buggue et definit __cplusplus meme quand
tu compiles du C;
- soit tu as une fonctionnalite de type `entetes pre-compiles' qui
fonctionne de maniere aberrante (ou dont tu as mal lu la doc) et qui a
defini un jour __cplusplus et qui relit le meme fichier d'entetes
rapidement sans se preoccuper de savoir si elle devrait s'inquieter
de la definition de C++.
Voila pour le diagnostic precis... pour la solution, c'est a toi de voir.
Je ne sais pas trop si ma question a sa place ici mais comme a priori elle ne dépend d'aucun système, je vous la soumet :
J'ai donc un souci avec la compilation d'un de mes fichiers (il est en ".c" pour des raisons historiques, je ne sais pas si cela a la moindre importance). Lorsque je le compile,
Mes premières lignes sont les suivantes :
#include <sys/cdefs.h> #include <sys/types.h>
Le compilateur me fait une "parse error before string constant" dans le fichier "types.h". Le souci c'est qu'à la ligne de l'erreur j'ai :
__BEGIN_DECLS
et que ce symbole a été définit comme étant extern "C" Auriez-vous déjà eu ce genre de problèmes parce que là j'vois plus :-(
Non, je n'ai jamais eu ce genre de problemes, par contre, je vois tres bien ce qui t'arrive.
Sur certains systemes, __BEGIN_DECLS sert a `proteger' les declarations de fonctions dans les entetes pour pouvoir s'en servir en C++.
C'est cense devenir plus ou moins; #ifdef __cplusplus #define __BEGIN_DECLS extern "C" { #define __END_DECLS } #else #define __BEGIN_DECLS #define __END_DECLS #endif
Ca permet de parentheser une serie de prototypes comme suit: __BEGIN_DECLS extern void f(int); extern int g(void); __END_DECLS
Et hop, on a des fonctions C avec les conventions d'appel de C, meme en C++.
Dans ton cas, visiblement, ton environnement de developpement compile un fichier .c comme un fichier, mais definit quand meme la macro __cplusplus (oh le vilain), d'ou le probleme, vu que extern "C" { ne veut rien dire en C...
De plusieurs choses l'unes: - soit tu as un fichier d'entete qui fait un #define __cplusplus errone; - soit tu as une definition de __cplusplus qui traine dans un Makefile ou assimile; - soit ton compilo est VRAIMENT buggue et definit __cplusplus meme quand tu compiles du C; - soit tu as une fonctionnalite de type `entetes pre-compiles' qui fonctionne de maniere aberrante (ou dont tu as mal lu la doc) et qui a defini un jour __cplusplus et qui relit le meme fichier d'entetes rapidement sans se preoccuper de savoir si elle devrait s'inquieter de la definition de C++.
Voila pour le diagnostic precis... pour la solution, c'est a toi de voir.