Variable einer anderen Funktion im main() verwenden?



  • Hallo Leute!

    Ich schreibe gerade ein Programm in C und ich habe extrem viele Variabeln!
    Diese habe ich, um den Haupt-Sourcecode zu kürzen in ein separates File variabeln.c abgelegt.

    Jetzt möchte ich diese jedoch in der main() Funktion benützen, also mit variabeln(); (Name der Funktion).

    Wenn ich das Programm ausführe sagt mir der Compiler das die Variabeln, welche ich ausgeben will, nicht deklariert wurden.

    Was muss ich machen, um die Variabeln verwenden zu können?

    Danke im Voraus! 🙂

    Lg Rogon



  • Prototypen schonmal gehört?



  • Wenn Du Variablen in main() verwenden willst, müssen sie entweder innerhalb der {} von main oder aber global definiert sein. Variablen, die innerhalb der {} einer Funktion definiert sind, kannst Du in anderen Funktionen nicht benutzen.

    Deine Fragestellung hört sich danach an, als würdest Du "struct" suchen.


  • Mod

    Du fragst zwar nach "extern" mit dem man globale Variablen aus anderen Modulen bekannt machen kann, aber: Viele globale Variablen zu haben ist eine ganz, ganz, ganz, schlechte Idee. Dunkelheit, Wahnsinn und Spaghetti 😋 liegen auf diesem Weg. Kehre möglichst sofort auf den Pfad der halbwegs strukturierten Programmierung zurück, wenn du dir was gutes tun möchtest. Wenn du nicht weißt, wie man globale Variablen vermeidet, lern etwas über Funktionen und structs.



  • LordJaxom schrieb:

    Deine Fragestellung hört sich danach an, als würdest Du "struct" suchen.

    und/oder Array.



  • Ich werfe mal einen Link in die Runde:

    http://c-buch.sommergut.de/Kapitel10/G�ltigkeitsbereich-von-Variablen.shtml

    Der Hinweis ist da auch drin, kann aber nicht oft genug wiederholt werden: Lass von globalen Variablen bloß die Finger. Durch solche Dschungel findet sich zwei Wochen später schon niemand mehr durch.



  • seldon schrieb:

    ... Durch solche Dschungel findet sich zwei Wochen später schon niemand mehr durch.

    Einer meiner Lehrer pflegte zu zitieren: "Programmiere so, als wäre derjenige, der Deinen Code warten muss ein geisteskranker Massenmörder!"

    Globale Variablen werden Deinen Tod langsam und grausam sein lassen 😉

    Aber im Ernst: Wehret den Anfängen! Call by Reference, wo auch immer Du globale Variablen einsetzen möchtest.
    Falls Du Dich nicht vom globalen Pfad abbringen lassen möchtest, dann DOKUMENTIERE wenigstens gut 😉

    Sonst hasst Du Dich übermorgen, wenn Du Programmänderungen durchführen musst...



  • Globale Variablen ein guter Weg, sicherzustellen, dass derjenige, der den Code warten muss, ein geisteskranker Massenmörder wird. Das gilt auch und ganz besonders, wenn man seinen eigenen Code wartet.



  • Ähm... Das mit dem Massenmörder habe ich jetzt nicht verstanden... 😕

    Könnte sonst bitte jemand ein kleiner Beispiel-Code raufladen?
    So eine main() Funktion, eine funktion() Funktion und eine Variable in funktion(),die danach in main() verwendet wird??

    Also relativ simpel... Ich wäre sehr froh, wenn mir jemand helfen könnte! 🙂

    Lg
    Rogon



  • Das, was du dir vorstellst, geht stumpf nicht. Lies dir den Link durch, da steht erklärt, wie Gültigkeitsbereiche funktionieren.



  • Rogon schrieb:

    Ähm... Das mit dem Massenmörder habe ich jetzt nicht verstanden... 😕

    Du bist auf dem falschen Weg.
    Alle die solchen Code warten mussten, sind wahnsinnig geworden.

    Wenn du Ergebnisse aus einer Funktion möchtest, nimm return.

    Wenn du mehr machen möchtest, solltest du der Funktion die Variablen mit auf den Weg geben (als Parameter angeben), die verändert werden sollen.
    Also die Funktion greift auf Variablen von main zu.


Anmelden zum Antworten