Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » verschachtelte void Funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.03.2019, 13:13 Uhr
ABcoder



Hallo liebe Community,

ich möchte eine etwas andere Funktionsstruktur in meinem Code nutzen und ich weiß nicht, ob das so möglich ist, wie ich mir das vorgenommen habe.
In code A habe ich eine void Funktion, in der eine andere void Funktion aufgerufen wird, was auch funktioniert. Nun möchte ich den Code so verändern, dass Ausgabe2 unterhalb von Ausgabe1 definiert wird (warum möchte ich das?- Aus gründen die ich nur bei Interesse nennen möchte). Mein Gedanke wird in Code B wiedergespiegelt, jedoch funktionier dieser code nicht.

Code A:


C++:
int main(){
    void Ausgabe2(){
    printf("Hallo von f2");
    }
    void Ausgabe1(){
    printf("Hallo von f1\n");
    Ausgabe2();
    
}

    Ausgabe1();
    return(0);
}



Ausgabe:

Hallo von f1
Hallo von f2



Code B:


C++:
int main(){

    void Ausgabe2();

    void Ausgabe1(){
    printf("Hallo von f1\n");
    Ausgabe2();
    
}
    void Ausgabe2(){
        printf("Hallo von f2");
    }
    Ausgabe1();
    return(0);
}



Fehlermeldung:


Zitat:

codeB.c: In function 'main':
codeB.c:14:7: error: static declaration of 'Ausgabe2' follows non-static declaration
void Ausgabe2(){
^~~~~~~~
codeB.c:8:7: note: previous declaration of 'Ausgabe2' was here
void Ausgabe2();


Gewünschte Ausgabe: wie bei code A


Vielen Dank!
Gruß, ABcoder

Dieser Post wurde am 21.03.2019 um 18:56 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.03.2019, 20:39 Uhr
f.-th.




Zitat von ABcoder:
...
(warum möchte ich das?- Aus gründen die ich nur bei Interesse nennen möchte). Mein Gedanke wird in Code B wiedergespiegelt, jedoch funktionier dieser code nicht.

...



Warum nicht den "normalen" Weg?


C++:
#include <stdio.h>

void returnstring2()
{
    printf("rtstring2\n");
}

void returnstring1()
{
    returnstring2();   // kannst ja zum Test diese Zeile mit der folgenden tauschen.

    printf("rtstring1\n");
}

int main()
{
    returnstring1();

    printf("demo: \n");
}




Oder sind da noch andere Punkte, die du nicht beschreibst, relevant?

Okay, die Namen der Funktionen sind nicht glücklich, da aus einem anderen Projekt kopiert.

Dieser Post wurde am 21.03.2019 um 20:47 Uhr von f.-th. editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.03.2019, 11:59 Uhr
Hans
Library Walker
(Operator)


Hi,

ich weis nicht, ob es in neueren Standards geht, aber soweit ich weis, ist es in C gar nicht erlaubt, Funktionen ineinander zu verschachteln. Deshalb wird der Code, den Du hier angegeben hast, von meinem Compiler auch nicht übersetzt. Nach meinem Wissensstand muss das Programm deshalb so geschrieben werden:

C++:
#include <stdio.h>

void Ausgabe1();    /* Funktionsprototypen */
void Ausgabe2();

int main()
{
    Ausgabe1();
    return(0);
}

/* Funktionsdefinitionen */

void Ausgabe1()
{
   printf("Hallo von f1\n");
   Ausgabe2();
}

void Ausgabe2()
{
   printf("Hallo von f2");
}


--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.

Dieser Post wurde am 23.03.2019 um 12:00 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
23.03.2019, 14:33 Uhr
ABcoder



Hallo,

danke erst einmal für eure Antworten!

Das Problem hat sich insofern für mich gelöst, dass ich diesen Forumseintrag nicht mehr brauche (gestern Abend war das der Fall).

Ich wollte drei Programmiersprachen kombinieren (aus 3 Codes, eine exe) und in meinem C code hatte ich keine Hauptfunktion (int main()) zur Verfügung, deswegen kam ich auf die verschachtelten void Funktionen.

Es gehört sich, dass ich jetzt die Lösung, die ich gefunden habe, hier Euch darstelle, jedoch würde es die Hauptfrage mit der ich den Forumseintrag erstellt habe, nicht beantworten. Um genau zu sein, habe ich es nicht direkt gelöst, sondern einfach umgangen.



Viele Grüße,
ABcoder
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: