Struct in Header Programm mitteilen
-
Hallo ich habe mal eine verständnis Frage.
Im Moment erstelle ich z.B einen struct in einem HeaderABC.H struct ABC{ int a; int b; int c; }
Rufe ihn in Programm den Programmen so auf
Programm ab.c:struct ABC abc;//* abc.a=5;
Programm cb.c
extern struct ABC abc;//* abc.b=9;
Kann ich das Ganze so im Header so definieren das die mit * gekennzeichneten Zeilen entfallen?
-
Du kannst die Zeile aus cb.c in den Header verschieben. Die andere muss aber bleiben, wo sie ist.
-
so wie in ab.c.
Kann ich das Ganze so im Header so definieren das die mit * gekennzeichneten Zeilen entfallen?
Was meinst du damit? Willst du eine globale Variable anlegen?
Dann muss das ganze so aussehen
// abc.h #ifndef ABC_H #define ABC_H struct ABC { int a; int b; }; extern struct ABC abc; #endif // abc.c #include "abc.h" struct ABC abc = { .a = 10, .b = 11 }; // oder { 10, 11 } wenn der Compiler kein C99 kann // foo.c #include <stdio.h> #include "abc.h" int main() { printf("%d\n", abc.a + abc.b); }
-
C_Anfänger schrieb:
Kann ich das Ganze so im Header so definieren das die mit * gekennzeichneten Zeilen entfallen?
rüdiger schrieb:
Dann muss das ganze so aussehen
Eben nicht! Er müßte immer noch in einem Modul die struct deklarieren. Heißt, Du hast keine Lösung für das Problem und versteigst Dich dazu, meine funktionierende Lösung kommentarlos aus dem Forum zu löschen?
Dann wird mir noch nicht mal begründet, warum und wieso, sondern auch noch die Nachfrage gelöscht. Ist ja schlimmer als in China ...Ich habe nichts anderes gemacht, als hier eine Lösung für das Problem des OP anzubieten und es wird einfach wegzensiert. Was für ein Laden ist das hier geworden