Header File C Programmieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Mikeyboy
Beiträge: 1
Registriert: 31.05.2004 21:08:08
Wohnort: Uster, Schweiz

Header File C Programmieren

Beitrag von Mikeyboy » 31.05.2004 21:12:03

Hallo

Weiss wirklich niemand, wie man folgendes in ein Header File main.h
verpackt.
Mein main.c lautet folgendermassen:

Code: Alles auswählen

struct drink1 {
                      unsigned char menge_orangensaft;      
          unsigned char menge_vodka;
          }drink_screwdriver={12,4};



void main (void)
{
Programm...
}

ich habe nun daraus folgendes main.h file gemacht:

#ifndef main_h
#define main_h

extern struct drink1 {
                      unsigned char menge_orangensaft;      
          unsigned char menge_vodka;
          }drink_screwdriver;

#endif
leider habe ich laufend errormeldungen. Weiss jemand, wie man eine
Struktur im Header File implementiert??
drink1 ist der Strukturname und drink_screwdriver der Variabelname der
Struktur...
Da ich drink_screwdriver noch in anderen xx.c files brauche, habe ich gedacht, dies wie oben beschrieben in ein headerfile main.h zu packen und dieses in allen xxx.c files zu includen, wo es gebraucht wird.
merkt jemand den fehler??

Bitte helft mir

Danke
Bin gerade an meiner Diplomarbeit zum Techniker TS Fachrichtung Elektronik und brauche drinngend Hilfe

tylerD
Beiträge: 4068
Registriert: 10.07.2002 17:34:13
Wohnort: Halle/Saale
Kontaktdaten:

Beitrag von tylerD » 31.05.2004 21:16:25

Mit einer Kostprobe der Fehlermeldungen wäre die Hilfe eventuell einfacher.

cu

Benutzeravatar
Rebell
Beiträge: 997
Registriert: 14.01.2003 20:36:53
Wohnort: Dresden

Beitrag von Rebell » 31.05.2004 21:24:27

müsste nicht ein #include "main.h" da rein?
come to daddy, windowlicker!
get m:ke - http://get-mike.de

Benutzeravatar
iocus
Beiträge: 55
Registriert: 25.03.2004 19:49:54
Wohnort: (CH)

Beitrag von iocus » 01.06.2004 19:18:44

Mit "extern" in einem Header-File machst du nur einen Verweis auf eine globale Variable, d. h. dieses drink_screwdriver muss in irgendeiner c-Datei definiert sein.

In einer Header-Datei stehen nie Variablendefinitionen von globalen Variablen (nur Deklarationen von Datenstrukturen und Externverweise auf globale Variablen)

Vielleicht war das das Problem?

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 01.06.2004 19:19:09

Ich habe 'mal [ code] Tags in das OP eingefügt... Bitte in Zukunft selbst machen, das erhöht die Lesbarkeit von Code enorm...

Danke,
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Heteropterix
Beiträge: 15
Registriert: 17.05.2004 10:24:43
Wohnort: Berlin

Re: Header File C Programmieren

Beitrag von Heteropterix » 03.06.2004 09:43:28

Code: Alles auswählen

extern struct drink1 {
                      unsigned char menge_orangensaft;      
          unsigned char menge_vodka;
          }drink_screwdriver;

#endif
Wenn Du das extern wegläßt sollte es gehen. Ich habe gerade folgendes ausprobiert:

test.cpp

Code: Alles auswählen

#include "test.h"
#include "iostream.h"

void main (void)
{	
	drink_screwdriver.menge_orangensaft = 4;
    cout<<drink_screwdriver.menge_orangensaft;
}
test.h

Code: Alles auswählen

extern struct drink1 { 
	      unsigned int menge_orangensaft;      
          unsigned int menge_vodka; 
				}drink_screwdriver; 
Ich hoffe das ist das, was Du wolltest.
Jan

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 03.06.2004 12:59:13

Ohne Extern wird die Variable jedoch definiert, und demnach kann das Header-File nur einmal eingebunden werden.

Folgendes sollte gehen:

Code: Alles auswählen

//aa.h
typedef struct drink {
  unsigned char menge_osaft;
  unsigned char menge_vodka;
} Drink;
extern Drink drink_screwdriver;

//aa.cpp
#include "aa.h"
Drink drink_screwdriver = { 12, 4 };

int main() {...}

//bb.cpp
#include "aa.h"

void test()
{ ... drink_screwdriver verwenden ... }
der drink muss natürlich nicht in der Datei mit main definiert werden, darf aber nur einmal im ganzen Programm geschehen! (Am besten, du erstellst ein "Drinks.cpp" Programm, indem nur die Drinks definiert werden.

BTW: Solche Globalen Variablen sind eher C-Programmierstil!

deepblack
Beiträge: 8
Registriert: 24.11.2002 19:59:09
Wohnort: Emden
Kontaktdaten:

Beitrag von deepblack » 04.06.2004 13:52:15

mehr oder weniger OT:

Code: Alles auswählen

#include <iostream>
using namespace std;
sollte das heißen.. aber das ja fast egal ;)

mfg deepblack
We have joy, we have fun, we have a root shell on a SUN

Antworten