Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Header file C programmieren

mikeyboy7980 / 2 Antworten / Baumansicht Nickles

Hallo Zusammen, habe folgendes Problem:

-------------------------------main.h-------------------------------- 

#ifndef main_h
#define main_h

typedef struct drink1 {

unsigned char menge_orangensaft;
unsigned char menge_vodka;
};

#endif

-------------------------main.h---------------------------------------

-------------------------main.c---------------------------------------

#include "main.h"

drink1 drink_screwdriver = {12,4};

void main(void)
{
programm...
}

------------------------main.c----------------------------------------
 
Die im main.h file mit typdef definierte structur wird im main.c mit drink1 drink_screwdriver = {12,4};
initialisiert. In weiteren xxx.c files greife ich wieder auf diese structur zu, darum habe ich mir gedacht, diese
in allen files wo die structur gebraucht wird das main.h file zu includen. Jedoch habe ich dort immer
Fehlermeldungen, dass die structur nicht definiert ist. Weiss jemand wo da der Fehler liegt??
bei Antwort benachrichtigen
littlehelper mikeyboy7980 „Header file C programmieren“
Optionen

mhh, meine c kenntnisse sind zwar schon etwas eingerostet, aber imho liegts an der definition im header file:
typedef struct drink1 {
unsigned char menge_orangensaft;
unsigned char menge_vodka;
};

müsste glaub ich in
typedef struct drink {
unsigned char menge_orangensaft;
unsigned char menge_vodka;
} drink1;

umgeschrieben werden.

A computer lets you make more mistakes faster than any invention in human history - with the possible exceptions of handguns and tequila.
bei Antwort benachrichtigen
vergisses mikeyboy7980 „Header file C programmieren“
Optionen

Zur besseren Erkennung im Quelltext habe ich es mir
angewöhnt, selbstdefinierte Datentypen gross zu schreiben.
Das sollte man bei allen Präprozessor Makros und Konstanten
ohnehin tun, und da neue Datentypen meistens auch in Headerfiles
definiert werden, habe ich die Grossschreibung eben auch
dafür übernommen.
(Ist allerdings auch etwas eine Geschmacksfrage...)

typedef struct drink {
unsigned char menge_orangensaft;
unsigned char menge_vodka;
} DRINK1;


Nun zu dem eigentlichen Problem:
Die Variable drink_screwdriver ist in main.c global definiert.
Damit aus anderen Quelltexten darauf zugegriffen werden kann,
muss sie dort mit
extern drink1 drink_screwdriver;
bzw. nach meiner Notation mit
extern DRINK1 drink_screwdriver;
bekanntgegeben werden.

Gruss, vergisses



bei Antwort benachrichtigen