J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec un
compilo C, qui va stocker les champs de chaque structure à sa
manière, et un compilo C++ qui va les ré-interpréter comme il
veut. Le fait que le link des deux se passe bien ne tient qu'au fait
que le compilo est gentil ?
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec un
compilo C, qui va stocker les champs de chaque structure à sa
manière, et un compilo C++ qui va les ré-interpréter comme il
veut. Le fait que le link des deux se passe bien ne tient qu'au fait
que le compilo est gentil ?
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec un
compilo C, qui va stocker les champs de chaque structure à sa
manière, et un compilo C++ qui va les ré-interpréter comme il
veut. Le fait que le link des deux se passe bien ne tient qu'au fait
que le compilo est gentil ?
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
Marc Boyer writes:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure
à sa manière, et un compilo C++ qui va les ré-interpréter
comme il veut. Le fait que le link des deux se passe bien ne
tient qu'au fait que le compilo est gentil ?
Le extern "C" dit au compilateur C++ "tu dois interpreter cela
comme un compilateur C".
Si ce qu'il faut sur la plateforme que tu utilises est
standardise (c'est en general le cas, soit formellement --
recherche ABI -- soit de fait parce que pour les autres
fournisseurs s'alignent sur ce que fait le fournisseur
principal), il n'y a pas de probleme.
Note que la syntaxe de extern "C" est concue pour qu'elle soit
etendable. Par exemple faire un extern "MBC" pour la version
de l'abi utilisee par le compilateur de Marc Boyer ou un
extern "Ada" pour se linker avec de l'Ada.
Marc Boyer <Marc.Boyer@enseeiht.yahoo.fr.invalid> writes:
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure
à sa manière, et un compilo C++ qui va les ré-interpréter
comme il veut. Le fait que le link des deux se passe bien ne
tient qu'au fait que le compilo est gentil ?
Le extern "C" dit au compilateur C++ "tu dois interpreter cela
comme un compilateur C".
Si ce qu'il faut sur la plateforme que tu utilises est
standardise (c'est en general le cas, soit formellement --
recherche ABI -- soit de fait parce que pour les autres
fournisseurs s'alignent sur ce que fait le fournisseur
principal), il n'y a pas de probleme.
Note que la syntaxe de extern "C" est concue pour qu'elle soit
etendable. Par exemple faire un extern "MBC" pour la version
de l'abi utilisee par le compilateur de Marc Boyer ou un
extern "Ada" pour se linker avec de l'Ada.
Marc Boyer writes:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure
à sa manière, et un compilo C++ qui va les ré-interpréter
comme il veut. Le fait que le link des deux se passe bien ne
tient qu'au fait que le compilo est gentil ?
Le extern "C" dit au compilateur C++ "tu dois interpreter cela
comme un compilateur C".
Si ce qu'il faut sur la plateforme que tu utilises est
standardise (c'est en general le cas, soit formellement --
recherche ABI -- soit de fait parce que pour les autres
fournisseurs s'alignent sur ce que fait le fournisseur
principal), il n'y a pas de probleme.
Note que la syntaxe de extern "C" est concue pour qu'elle soit
etendable. Par exemple faire un extern "MBC" pour la version
de l'abi utilisee par le compilateur de Marc Boyer ou un
extern "Ada" pour se linker avec de l'Ada.
Marc Boyer wrote:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
La norme
C++ ne peut pas imposer quoique ce soit au compilateur C. Il
peut même y avoir plusieurs compilateurs C sur la machine, avec
des organisations (et la décoration des noms, et les conventions
d'appel) différentes. Ou il peut ne pas y avoir de compilateur C
du tout.
L'intention est à mon avis claire, le compilateur C++ doit
essayer à faire en sort que ça passe avec au moins un
compilateur C. J'ai même l'impression qu'en ce qui concerne les
struct, que l'intention est qu'une classe POD soit compatible
avec ce que fait le compilateur (ou un des compilateurs) C.
Dans la pratique, sur beaucoup de systèmes aujourd'hui, la API
système est défini en termes de C, tous les compilateurs C y
conforme, et ça serait un très mauvais compilateur C++ qui n'y
conformerait pas. En somme, je ne m'y inquièterais pas.
Marc Boyer wrote:
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
La norme
C++ ne peut pas imposer quoique ce soit au compilateur C. Il
peut même y avoir plusieurs compilateurs C sur la machine, avec
des organisations (et la décoration des noms, et les conventions
d'appel) différentes. Ou il peut ne pas y avoir de compilateur C
du tout.
L'intention est à mon avis claire, le compilateur C++ doit
essayer à faire en sort que ça passe avec au moins un
compilateur C. J'ai même l'impression qu'en ce qui concerne les
struct, que l'intention est qu'une classe POD soit compatible
avec ce que fait le compilateur (ou un des compilateurs) C.
Dans la pratique, sur beaucoup de systèmes aujourd'hui, la API
système est défini en termes de C, tous les compilateurs C y
conforme, et ça serait un très mauvais compilateur C++ qui n'y
conformerait pas. En somme, je ne m'y inquièterais pas.
Marc Boyer wrote:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
La norme
C++ ne peut pas imposer quoique ce soit au compilateur C. Il
peut même y avoir plusieurs compilateurs C sur la machine, avec
des organisations (et la décoration des noms, et les conventions
d'appel) différentes. Ou il peut ne pas y avoir de compilateur C
du tout.
L'intention est à mon avis claire, le compilateur C++ doit
essayer à faire en sort que ça passe avec au moins un
compilateur C. J'ai même l'impression qu'en ce qui concerne les
struct, que l'intention est qu'une classe POD soit compatible
avec ce que fait le compilateur (ou un des compilateurs) C.
Dans la pratique, sur beaucoup de systèmes aujourd'hui, la API
système est défini en termes de C, tous les compilateurs C y
conforme, et ça serait un très mauvais compilateur C++ qui n'y
conformerait pas. En somme, je ne m'y inquièterais pas.
Marc Boyer wrote:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
Pas grand chose, juste être sur que j'avais bien compris.La norme C++ ne peut pas imposer quoique ce soit au
compilateur C. Il peut même y avoir plusieurs compilateurs C
sur la machine, avec des organisations (et la décoration des
noms, et les conventions d'appel) différentes. Ou il peut ne
pas y avoir de compilateur C du tout.
Mais il pourrait y avoir des ABI qui fixent des règles.
Marc Boyer wrote:
J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
Pas grand chose, juste être sur que j'avais bien compris.
La norme C++ ne peut pas imposer quoique ce soit au
compilateur C. Il peut même y avoir plusieurs compilateurs C
sur la machine, avec des organisations (et la décoration des
noms, et les conventions d'appel) différentes. Ou il peut ne
pas y avoir de compilateur C du tout.
Mais il pourrait y avoir des ABI qui fixent des règles.
Marc Boyer wrote:J'ai un code C qui lit un fichier, et remplis un tableau
de structures.
J'aimerais reprendre ce code en C++. Bon, dans la pratique,
un coup de
extern "C" {
#include "parse_file.h"
}
Et le fichier parse_file.h contient des définitions
de structure
typedef struct {
int id;
char nom[30];
...
} Noeud;
Mais dans la théorie, je vais compiler mon parse_file.c avec
un compilo C, qui va stocker les champs de chaque structure à
sa manière, et un compilo C++ qui va les ré-interpréter comme
il veut. Le fait que le link des deux se passe bien ne tient
qu'au fait que le compilo est gentil ?
En toute rigueur, oui. Qu'est-ce que tu veux de plus ?
Pas grand chose, juste être sur que j'avais bien compris.La norme C++ ne peut pas imposer quoique ce soit au
compilateur C. Il peut même y avoir plusieurs compilateurs C
sur la machine, avec des organisations (et la décoration des
noms, et les conventions d'appel) différentes. Ou il peut ne
pas y avoir de compilateur C du tout.
Mais il pourrait y avoir des ABI qui fixent des règles.