Array in h Datei

Gast #4646749
Lesenswert?
• ▲
▼
Hallo,

ich dachte eigentlich das folgende Funktioniert:


test.h:
#define TEST 5
extern uint8_t array[];

======================

test.c:

array[0] = TEST;
array[1] = 9;

======================

nutzen.h

void fuk(void);

======================

nutzen.c

#include "test.h"
#include "nutzen.h"

void fuk(void){
if(array[0] == 5)
usw...
}

======================
main.c
#include "test.h"
#include "nutzen.h"
int main(void) {

fuk();

return 0;
}


Tuts aber nicht. Wo ist mein Fehler? Ich will im Grunde das Array sowohl 
in der test.c, der nutzen.c und main.c verändern/ausgeben können.


Ich bekomme folgende Meldungen:

test.c warning: data definition has no type or storage class
test.c warning: type defaults to 'int' in declaration of 'array' 
[-Wimplicit-int]|
test.c conflicting types for 'array'
test.h note: previous declaration of 'array' was here
test.h error: invalid initializer
Moderator #4646776
Lesenswert?
• ▲
▼
In test.c wolltest du wahrscheinlich schreiben:

1
#include "test.h"
2

3
uint8_t array[] = { TEST, 9 };


Bei dir fehlt die Definition von array. Außerdem sind auf Top-Level
(also außerhalb von Funktionen) zwar Initialisierungen, aber keine
Zuweisungen wie

1
array[0] = TEST;

zulässig.
Gast #4646779
Lesenswert?
• ▲
▼
Wenn ich dich richtig verstehe, so:
(Funktioniert bei mir aber auch nicht)

test.h:
#define TEST 5
extern uint8_t array[1];

======================

test.c:
uint8_t array[1];
array[0] = TEST;
array[1] = 9;

======================

nutzen.h

void fuk(void);

======================

nutzen.c

#include "test.h"
#include "nutzen.h"

void fuk(void){
if(array[0] == 5)
usw...
}

======================
main.c
#include "test.h"
#include "nutzen.h"
int main(void) {

fuk();

return 0;
}
Moderator #4646791
Lesenswert?
• ▲
▼
Include schrieb:
> uint8_t array[1];

Die Größe 1 ist zu klein, wenn du 2 Elemente nutzen möchtest.

> array[0] = TEST;
> array[1] = 9;

Das sind Top-Level-Zuweisungen (s. mein letzter Beitrag).

Mindestens in test.h musst du natürlich auch noch stdint.h inkludieren,
damit du uint8_t verwenden kannst.

Edit:

Ok, du hast es inzwischen ja hinbekommen :)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren