IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Utiliser du C dans du C++


Sujet :

C++

  1. #1
    Membre tr�s actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par d�faut Utiliser du C dans du C++
    Bonjour,

    Je doit utiliser des fonctions et des structures C dans du code C++,
    j'ai bien pris soin de proteger les en-tetes C par un "extern C".

    Es ce que cela me permet d'ecrire les differantes instances des structres (allou� par new) dans un fichier avec la primitive fwrite, et de la recharger dans un programme pur C (allou� avec malloc) et charge avec fread.

    Apparement cela fonctionne apres un petit teste rapide, mais ne crains que ce mellange d'allocations memoire ne pose probleme (je n'ai pas encore oser ecrire dans un fichier avec un ostream, je ne pense pas que cela fonctionne a la lecture avec fread ?)

  2. #2
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    Non, il n'y a pas de probl�me si l'allocation et la d�sallocation sont faites par le m�me langage (pas de malloc avec un delete par exemple). Pour le reste, si c'est ton code C qui lit et �crit la structure, sachant qu'elle est d�clar�e en C, compil�e en C, ... �a va passer.

  3. #3
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par d�faut
    Es ce que cela me permet d'ecrire les differantes instances des structres (allou� par new) dans un fichier avec la primitive fwrite, et de la recharger dans un programme pur C (allou� avec malloc) et charge avec fread.
    Dans tous les cas c'est mal. Le jour o� ton compilateur d�cide, pour une raison x ou y, que, int n'est plus sur 32bits mais 64, par exemple, tout ton
    code va foirer. Il y a aussi les probl�me de petits et grands-boutistes.

    Tu gagneras (sur le long terme) � d�finir un format de fichier binaire correctement sp�cifi�.

  4. #4
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par white_tentacle Voir le message
    Dans tous les cas c'est mal. Le jour o� ton compilateur d�cide, pour une raison x ou y, que, int n'est plus sur 32bits mais 64, par exemple, tout ton
    code va foirer. Il y a aussi les probl�me de petits et grands-boutistes.

    Tu gagneras (sur le long terme) � d�finir un format de fichier binaire correctement sp�cifi�.
    Sans compter que s'il s'agit d'�changer des donn�es entre 2 ex�cutables qui tournent en m�me temps, il existe d'autre solution que le fichier temporaire;

  5. #5
    Membre tr�s actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par d�faut
    justement, je compte compiler le loader sous power pc 64, et je programme et cr�er les fichiers sous intel 32... je me doutais que cela n'allai pas �tre terrible... comment je peut faire pour avoir des fichier portable ?

    Les exe n'echangent pas les donn�es en meme temps, de plus les fichiers ne sont pas temporaire mais seront eventuellement relu ulterieurement.

  6. #6
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par TheDrev Voir le message
    justement, je compte compiler le loader sous power pc 64, et je programme et cr�er les fichiers sous intel 32... je me doutais que cela n'allai pas �tre terrible... comment je peut faire pour avoir des fichier portable ?
    Tu ne laisses pas le compilateur d�cider comment �crire un int (ou tout autre type) mais tu d�finis ton format de fichier binaire. Ensuite tu te fais les interfaces d'�criture et de lecture de ton format de fichier.
    Je crois que tu peux aussi utiliser Boost.Seralization pour �a.

    Citation Envoy� par TheDrev Voir le message
    Les exe n'echangent pas les donn�es en meme temps, de plus les fichiers ne sont pas temporaire mais seront eventuellement relu ulterieurement.
    J'ai pr�f�r� poser la question au cas o�...

  7. #7
    R�dacteur

    Avatar de Matthieu Brucher
    Profil pro
    D�veloppeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    D�tails du profil
    Informations personnelles :
    �ge : 43
    Localisation : France, Pyr�n�es Atlantiques (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par d�faut
    En plus tu vas t'amuser avec des diff�rences big endian/little endian...

  8. #8
    Membre tr�s actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par d�faut
    d'acc, a partir d'ici je vais utiliser du C (m�me si c'est dans du C++, cette partie marche).

    Comment faire pour definir un format de fichier binaire ??

    Merci !

  9. #9
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par d�faut
    d'acc, a partir d'ici je vais utiliser du C (m�me si c'est dans du C++, cette partie marche).
    Personne n'a sugg�r� d'utiliser du C, tu peux tr�s bien tout faire en C++.

    Comment faire pour definir un format de fichier binaire ?
    De la m�me mani�re qu'on sp�cifie un fichier texte. Il faut dire sur combien de bits tu code tes entiers, le boutisme utilis�... Idem pour les cha�nes de carct�res, et pour toute donn�es que tu dois utiliser.

    Comme ce genre de probl�me a �t� maintes et maintes fois �t� trait�, il existe des biblioth�ques de s�rialisation qui servent � faire �a. boost::serialization doit s�rement pouvoir t'aider, mais je ne l'ai jamais utilis�, donc je ne peux pas t'en dire plus. Sinon, regarde du c�t� de l'encodage BER.

  10. #10
    Membre tr�s actif
    Avatar de TheDrev
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    310
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 310
    Par d�faut
    en fait je dois utiliser le C pour la partie s�rialisation , car le chargeur cot� client et en C. J'ai trouv� la libtpl qui fait de la s�rialisation binaire portable, sinon il faut �crire en ASCII...

    Ceci dis je regarderai dans BOOST quand l'occasion se presentera.

    Merci !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Utilisation de MAX dans une requ�te SQL
    Par Evil onE dans le forum Langage SQL
    R�ponses: 7
    Dernier message: 15/06/2004, 18h38
  2. Utilisation fonction d�finie dans un .Dll
    Par jeab. dans le forum Windows
    R�ponses: 5
    Dernier message: 23/03/2004, 16h23
  3. R�ponses: 3
    Dernier message: 11/03/2004, 10h58
  4. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    R�ponses: 2
    Dernier message: 10/04/2003, 15h04
  5. Utilisation de Pointeurs dans API windows
    Par Drooxy dans le forum API, COM et SDKs
    R�ponses: 4
    Dernier message: 13/03/2003, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo