Neudefinition; unterschiedliche Basistypen (typedef struct)
Bin ich ein bisschen Mühe zu versuchen, um Strukturen, um richtig zu arbeiten, wenn Sie definiert sind, in verschiedenen Dateien. Aus soweit ich das beurteilen kann, der Fehler sagt mir, dass die struct definiert zwei verschiedene Zeiten. Ich glaube, dass ich vielleicht verwenden müssen, um extern irgendwo? Ich habe versucht, zu Experimentieren und auf der Suche nach Hilfe über Google, aber ohne Erfolg.
Jede Hilfe wäre sehr geschätzt, danke. Alle vier Dateien sind unten.
- DATEI: Foo.h
typedef struct
{
int number;
} my_struct; //Redefinition; different basic types
- DATEI: Foo.c
#include "Foo.h"
#include "Bar.h"
#include <stdio.h>
my_struct test;
int main(void)
{
test.number = 0;
DoSomething(&test);
printf("Number is: ", &test.number);
}
- DATEI: Bar.h
#include "Foo.h"
void DoSomething(my_struct *number);
- DATEI: Bar.c
#include "Bar.h"
void DoSomething(my_struct *number)
{
number->number = 10;
}
InformationsquelleAutor Tundra Fizz | 2012-05-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, Sie haben
Foo.h
imBar.h
. Und beideFoo.h
undBar.h
sind inmain.cpp
, die Ergebnisse immer diemy_struct
definition zweimal in der übersetzungseinheit. Eineifdef
Richtlinie um struct-definition-Datei. Versuchen Sie, diese -Froh, dass ich helfen konnte. Hoffe Sie verstehen was Sie falsch gemacht haben. Erfahren Sie mehr über die jobs, die Präprozessor, Compiler und Linker.
Ja, wie gut ich sollte auch desinfiziert meine header-Dateien von Anfang an. Ich höre es eine gute übung, in die Gewohnheit, dies zu tun.
InformationsquelleAutor Mahesh