2 Dateien miteinander verknüpfen!
-
Hallo,
wiedermal eine Anfänger Frage... Ich hoffe ihr könnt mir helfen! Ich hab leider keine Seite gefunden, wo erklärt wird wie man 2 Dateien miteinander verknüpfen kann! Ich weiß auch gar nicht ob das funktioniert!
Hier z.B. soll wenn ich 1 Drücke "Hallo" erscheinen, und sobald ich die 2 schreibe "Tschüss"!
Haupt
#include <stdio.h> #include <stdlib.h> char test; int main() { scanf ("%d",&test); if (test==1) goto Datei1/sprung1; else Datei2/sprung2; }
Datei1
sprung1: printf ("Hallo")
Datei2
sprung2: printf ("Tschüss")
Ich hoffe ich konnt mein Problem vernünftig erklären
lg
-
Du kannst nicht mittels goto aus einer Funktion herausspringen. Dazu brauchst du mindestens longjmp oder Inline-Assembly.
Mein Tipp: Nimm zur Kenntnis das die goto und longjmp Funktionalität existiert, aber benutze sie nicht. goto ist schon "considered harmful", longjmp ist noch viel schlimmer. Programmiere strukturiert, dann bleibst du auch bei klarem Verstand! In ein paar Jahren mal, wenn du wirklich viel Erfahrung hast, dann kannst du vielleicht mal so langsam darüber nachdenken, ob an manchen Stellen nicht ein goto eine gute Idee wäre und kannst dies selbstständig richtig entscheiden. Und wenn du mal ein alter Hase bist und Systemprogrammierung der untersten Ebene betreibst oder dir in C die Exceptions aus höheren Sprachen fehlen, dann darfst du dich erinnern, dass es longjmp gibt.
-
http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html
Köstlich.
Allerdings scheint mir das ohne automatisches Speichermanagement irgendwie nicht sehr produktiv.
-
cooky451 schrieb:
http://www.di.unipi.it/~nids/docs/longjump_try_trow_catch.html
Köstlich.
Allerdings scheint mir das ohne automatisches Speichermanagement irgendwie nicht sehr produktiv.Du kannst alles was du aus C++ kennst in C nachbauen. Es wird bloß beliebig gruselig. Selbst so etwas wie die Verbindung von Exceptions mit Abrollen des Stacks kann man machen. Du müsstest dafür "bloß" zu dem Code springen, wo die (in C explizit aufzurufenden) Destruktoren liegen. Das klingt, wie du merkst, ganz schön umständlich und ist auch einer der Gründe, warum Exceptionbehandlung recht langsam ist, wenn tatsächlich mal eine Exception fliegt (und daher nicht zur Ablaufsteuerung benutzt werden sollte). C++ kann schließlich nicht zaubern und erzeugt Assemblercode, den man wieder zu C-Code decompilen könnte.
Happy Thread Derailing!
-
2 Dateien miteinander verknüpfen
Macht folgendes allerdings nicht:
#include <stdio.h> int main() { int test; printf("1 = Hallo, 2 = Tschüss, 0 = Ende\n"); // stimmt nicht ganz do { scanf("%d", &test); if (test==1) printf("Hallo\n"); else printf("Tschüss\n"); }while(test); }
Das kann man sicher noch optimieren. Kannst ja andere Zahlen zum Test eingeben und Quelltext anpassen, wenn nötig
-
EasyBoy schrieb:
Hallo,
wiedermal eine Anfänger Frage... Ich hoffe ihr könnt mir helfen! Ich hab leider keine Seite gefunden, wo erklärt wird wie man 2 Dateien miteinander verknüpfen kann! Ich weiß auch gar nicht ob das funktioniert!
Was du suchst, nennt man wohl Funktion. Damit kann man sozusagen in andere Dateien springen. Technisch ist das deinem Versuch sehr ähnlich (du hast natürlich den Rücksprung vergessen).
Lies ein Buch über C, da werden Funktionen erklärt.
-
Hier nun eine Variante mit mehreren Dateien.
Ob das deinen Vorgaben eher gerecht wirdmain.c
#include <stdio.h> #include "mfheader.h" int main() { int test; printf("1 = Hallo, 2 = Tschüss, 0 = Ende\n"); do { scanf("%d",&test); if (test==1) mfhallo(); else mftsch(); }while(test); }
mfheader.h
#ifndef __MFHEADER_H #define __MFHEADER_H void mfhallo(); void mftsch(); #endif
ausgabe.c
#include <stdio.h> #include "mfheader.h" void mfhallo() { printf("Hallo\n"); } void mftsch() { printf("Tschüss\n"); }
Da sind auch noch genügend andere Varianten denkbar
Jetzt musst du das nur noch deinem Compiler und deinem Linker erklären, wie die das zu bearbeiten haben