ostream als Fkt.Argum.
-
Wieso geht das einmal, nach dem zweiten Aufruf crasht das Programm:
(bcc32, winXP, DOS-Zeile)void gibaus( ostream& aus)
{
aus << "sowieso und sowieso\n" ;
aus.write ( irgendwas...) ;
aus << "mehr davon....\n" ;
...
aus << "und noch mehr..." ;
return ;
}int main( int argc, char* argv[] )
{
...gibaus( cout ) ;
gibaus( cout ) ;
// hier stürzt es...
gibaus(cout );cout << "hallo" ; // nicht mehr sichtbar
}????
Übrigens dasselbe Problem, wenn
- void gibaus( ostream* aus){ aus->write(...) oder *aus << ...
- ofstream statt ostream und ein Filehandle statt cout
Danke für Hinweise
-
Zeig doch mal deine write-Aufruf.
Sollte nämlich eigentlich funktionieren, wenn Du da write("irgendwas", strlen("irgendwas")) oder so stehen hast.
-
Ich benutze ganz normales Schreiben (siehe Anfangsposting) ohne irgendwelche
Besonderheiten.Der Witz kommt aber erst noch:
Wenn ich die Zeilen innerhalb Funktion gibaus( ostream& aus)
nicht mehr als Funktion schreibe, sondern direkt in main()
hineinkopiere,
d.h.
main()
...
sowieso
...
...
ofstream aus; aus.open( ...oder so ähnlich...) ;
aus << "blabla" ;
aus << "noch was..." ;
aus << "und noch mehr..." ;
} // ende main...Dann crasht das Programm nicht mehr, selbst wenn der Inhalt
von aus 4-mal oder öfter hinterinander steht.Und auch komisch:
Es crasht auch nicht, wenn ich die Funktion
gibaus(ostream& aus)
als Macro schreibe, also#define gibaus(aus) (aus) << "hallo, noch mehr"; (aus) << "das auch noch" ....
usw...- das Macro kann ich so oft aufrufen wie ich will, die Funktion
crasht nach dem zweiten Aufruf (der erste geht aber noch!)- ich finde das komisch. Nicht wahr?
Danke für Hinweise.