1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

external linkage - mit structs..?

  • sommeralex
  • 19. Juli 2005 um 00:39
  • Unerledigt
  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 19. Juli 2005 um 00:39
    • #1

    Hallo & guten Abend,


    in meinem beispielprojekt funktioniert leider etwas nicht ganz so, wie ich es mir wünsche. vielleicht könnte mir hier jemand helfen, ich wäre sehr dankbar! also:

    ich hab zwei files. die eine "main.c" die andere "extern.c"

    die main.c sieht so aus:

    #include <stdio.h>

    int main(){
    printf("Test");
    int ergebnis = mulitpliziere(3,4);
    return 0;
    }

    die extern.c sieht so aus:

    #include <stdio.h>

    typedef struct{

    int x;
    double y;
    float z;

    }struktur;

    int multipliziere(int a, int b){

    return a * b;

    }

    ----------------------------

    dabei kann ich aus der main.c file heraus die funktion mulipliziere ansprechen. aber auf mein struktur objekt nicht. ein "struct struktur test;" ist nicht möglich. auch mit pointern kann ich nicht arbeiten, da ich keinen pointer in meiner main funktion deklarieren kann, der eben vom typ struktur ist, da der compiler den nicht findet. habs auch mit "external" experiementiert, aber mein bauch sagt mir, dass ich etwas prinzipielles übersehe.

  • volatile_void
    3
    volatile_void
    Mitglied
    Punkte
    45
    Beiträge
    9
    • 19. Juli 2005 um 13:11
    • #2

    Das Problem ist, dass der Compiler in main.c keine Kenntnis von dieser Struktur hat. Du solltest sie deshalb in einer Header-Datei definieren (z.B in extern.h).
    Das selbe solltest du auch für multipliziere machen, damit der Compiler die Argumentanzahl und -typen überprüfen kann.

    main.c

    Code
    #include <stdio.h>
     #include "extern.h"
    
    
    int main(){
      printf("Test");
      int ergebnis = mulitpliziere(3,4);
      return 0;
    }

    extern.h

    Code
    typedef struct{
      int x;
      double y;
      float z;
    }struktur;
     
     int multipliziere(int a, int b);

    extern.c

    Code
    int multipliziere(int a, int b){
      return a * b;
    }

    Ich hoff das funktioniert dann so (habs net ausprobiert).

  • sommeralex
    11
    sommeralex
    Mitglied
    Punkte
    1.325
    Beiträge
    188
    • 19. Juli 2005 um 14:41
    • #3

    an das hab ich auch schon gedacht, vielen dank für den tip! es sollte funktionieren, da ja andere typdefs/structs (zb.: time_t) ebenso ansprechbar sind..

  • Maximilian Rupp 27. Dezember 2024 um 12:06

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung