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 :

Struct et compilation


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    lamelfa
    Invité(e)
    Par défaut Struct et compilation
    Bonjour, alors voilà j'ai un problème avec une structure...
    J'ai une structure IMAGE qui possède un champ char lfmt[9]...je tape le bout de code suivant:

    IMAGE * image;
    char nom[9];

    image->lfmt = nom; ====> erreur de compilation: (incompatible types)

    Alors voilà, quelle est la bonne méthode?

    ----------------------------------------------------------------------------------------------------------
    Deuxième question:
    J'ai un programme principal appli...il a besoin de fonctions déclarées dans partie1.c
    Comment faire pour lier les deux?

    Je suis désolé de poser des questions si "basiques" pour certains, mais ça fait longtemps que je n'ai pas fait de C

    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par lamelfa
    Bonjour, alors voilà j'ai un problème avec une structure...
    J'ai une structure IMAGE qui possède un champ char lfmt[9]...je tape le bout de code suivant:

    IMAGE * image;
    char nom[9];

    image->lfmt = nom; ====> erreur de compilation: (incompatible types)

    Alors voilà, quelle est la bonne méthode?
    [EDIT]
    Utiliser la fonction strcpy: man
    [/EDIT]

    ----------------------------------------------------------------------------------------------------------
    Deuxième question:
    J'ai un programme principal appli...il a besoin de fonctions déclarées dans partie1.c
    Comment faire pour lier les deux?

    Je suis désolé de poser des questions si "basiques" pour certains, mais ça fait longtemps que je n'ai pas fait de C

    Merci d'avance
    Définir les fonctions de partie1.c dans un fichier partie1.h, inclure ce fichier .h dans les fichers .c qui en ont besoin.

    Compiler correctement les fichiers mais cela dépend de ce que tu utilises...

    Jc

  3. #3
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par fearyourself
    Utiliser la fonction strcmp: man

    Jc
    Je dirais plutôt "strcpy"

  4. #4
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par crocodilex
    Je dirais plutôt "strcpy"
    Exact.

    crocodilex 1-1 fearyourself


    Jc

  5. #5
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par fearyourself
    Exact.

    crocodilex 1-1 fearyourself


    Jc
    Le match a commencé....Il ne me reste plus que 1200 de tes 1247 messages a éplucher pour trouver les failles....

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    Pour la première les variables doivent être du même type.

    Pour la deuxième, avec un makefile ça devrait le faire

  7. #7
    lamelfa
    Invité(e)
    Par défaut
    Merci pour vos réponses très rapides

    Alors j'ai utilisé strcpy...ça marche nickel merciiii
    par contre je dosi faire la même opération sur des unsigned char...et là la fonction strcpy ne marche plus (elle ne prend que des char)...comment faire?

    Sinon j'ai en effet un .h que mes .c utilisent...seulement le .h indique juste que les fonctions écrites dedans existent...comment faire le lien avec le corps des fonctions (le .c du .h en fait)...
    Je veux connaitre les options de compilation en fait...
    A priori je dirais qu'il faut créer le .o du .c et lors de la compil du programme principal, lier avec le .o nan?

  8. #8
    Expert confirmé

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Par défaut
    Citation Envoyé par lamelfa
    Sinon j'ai en effet un .h que mes .c utilisent...seulement le .h indique juste que les fonctions écrites dedans existent...comment faire le lien avec le corps des fonctions (le .c du .h en fait)...
    Je veux connaitre les options de compilation en fait...
    A priori je dirais qu'il faut créer le .o du .c et lors de la compil du programme principal, lier avec le .o nan?
    Exemple:

    On a un fichier foo.c, un fichier bar.c et on a besoin des deux pour la compilation.

    Pour compiler, on fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    gcc -c foo.c 
    gcc -c bar.c
     
    gcc foo.o bar.o -o foodbar
    [Hors sujet]
    Le match a commencé....Il ne me reste plus que 1200 de tes 1247 messages a éplucher pour trouver les failles....
    Facile...

    Je dirais 1 une faille tous les 2 messages... Quoique, je suis gentil avec moi-même...
    [/Hors sujet]
    Jc

  9. #9
    lamelfa
    Invité(e)
    Par défaut
    Merci beaucoup pour le petit rappel de compilation
    ça marche maintenant

    Reste juste le léger problème à propos de strcpy...je pense que je vais pas en tenir compte et voir au niveau du résultat final si y a des problèmes ou pas...

    Merci à vous

  10. #10
    lamelfa
    Invité(e)
    Par défaut
    Je tiens juste à préciser que pour strcpy avec des unsigned char, je reçois des warnings en fait (ça compile)...dois-je en tenir compte? peut-être que la copie s'effectue correctement malgré le changement de type...?

  11. #11
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par lamelfa
    Je tiens juste à préciser que pour strcpy avec des unsigned char, je reçois des warnings en fait (ça compile)...dois-je en tenir compte? peut-être que la copie s'effectue correctement malgré le changement de type...?
    C'est pas du tout normal que des tableau de char déstinés à être des chaine de caractères soient définis avec des unsigned char. Tu es absolument sûr que ce sont des tableaux pour chaines de caractères ?

    Si ce n'est pas la cas, il faut utiliser memcpy() avec comme taille, celle du tableau de destination (utiliser l'opérateur sizeof).

Discussions similaires

  1. pb compilation avec struct et template
    Par tom31 dans le forum C++
    Réponses: 1
    Dernier message: 03/02/2011, 20h06
  2. erreur de compilation : struct declared inside list
    Par étoile de mer dans le forum Débuter
    Réponses: 2
    Dernier message: 30/12/2009, 01h52
  3. Vitesse de compilation
    Par srvremi dans le forum C++Builder
    Réponses: 5
    Dernier message: 30/07/2002, 16h49
  4. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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