C++ - Neues Kommentarzeichen?

Tintenfaß

Grünschnabel
Hallo!
Wieder einmal von meiner, unwissenden Newbie-Seite eine Frage an Euch. Folgendes Problem: Ich habe mir über ofstream einen neuen Befehl definiert ("fout"), der mir in meinem Programm einiges in einer neuen Datei ausgeben. Dieser Befehl kommt sehr häufig vor, nun möchte ich allerdings für Testzwecke diesen Befehl "aussparen", also jede Zeile, in der der Befehl vorkommt, revidieren.

Meine Ideen dazu:
Normalerweise würde ich vor jedes "fout" einfach "//" hinschreiben, also die Zeile als Kommentar belassen. Vielleicht könnte man ein neues Kommentarzeichen einführen, indem ich anstatt "fout" als Ausgabebefehl als Kommentarzeichen definiere?
Vielleicht könnte man auch mit #ifdef oder ähnlichen Direktiven den Compiler anweisen, jede Zeile mit "fout" auszusparen.


Leider hab ich zu keiner dieser Lösungsansätze etwas brauchbares googlen können, und mein Ansatz mit #define fout // ist auch gnadenlos in die Hose gegangen. Über Hilfe wäre ich Euch sehr dankbar!
 
Das macht man normalerweise mit:

Code:
#ifdef USE_FOUT
#define FOUT(a) fout(a)
#else
#define FOUT(a)
#endif

Die Parameter in den Klammern mußt Du natürlich der Anzahl der Parameter Deiner fout-Funktion anpassen.
So kannst Du aber an einer Stelle Dein fout ein- oder ausschalten.

P.S.: Im Code verwendest Du dann anstatt fout natürlich das FOUT Macro!
 
Hallo jokey,

Danke für die schnelle Beantwortung. Aber entweder hast Du mich falsch verstanden, oder an mir ist bisher vorübergegangen, daß Befehle solcher Art Paramter übernehmen. Stilisiert sieht mein Problem wie folgt aus, wobei ich das Rote sozusagen das Austauschbare werden soll:
Code:
#include <fstream>
using namespace std;
ofstream fout ("Blabla.dat");

int main()
{
//	fout << "Hello world!" <<endl;
	return 0;
}
Irgendwie weiß ich nicht, wie ich Deine Lösung umsetzen sollte :confused:

Herzlichen Dank schon im Voraus
 
Dann ist fout allerdings kein 'Befehl' also keine Funktion, sondern ein Objekt der Klasse ostream.
Dann könntest Du es so machen:
Code:
 #ifdef USE_FOUT
ofstream fout ("Blabla.dat");
#define FOUT1(a) fout << a << endl;
#define FOUT2(a,b) fout << a << b << endl;
#define FOUT3(a,b,c) fout << a << b << c << endl;
#define FOUT4(a,b,c,d) fout << a << b << c << d << endl;
#else
#define FOUT1(a)
#define FOUT2(a,b)
#define FOUT3(a,b,c)
#define FOUT4(a,b,c,d)
#endif
Du müßtest dann für jede Anzahl von Parametern ein eigenes Makro verwenden.

Über dem #ifdef müßtest Du allerdings noch USE_FOUT definieren, wenn Du die Ausgabe haben willst.
 
Vielen Dank, jetzt hats tatsächlich geklappt und ich glaub, ich hab sogar einigermaßen verstanden, was da gemacht wurde.

:-( Ich trau mich ja kaum zu fragen, aber kann man das fout nicht vielleicht doch in ein Kommentarzeichen umwandeln? Ich müßte nach Deiner Methode ca 30 - 50 verschiedene Fouts einführen...
 
Nein, Kommentarzeichen lassen sich in C/C++ nicht definieren. Es gibt nur '/*Block-Kommentar*/' und '//Zeilenkommentar'.
Wieso brauchst Du 30-50 solche Defines? Hast Du Ausgaben mit 50 Parametern?
 

Neue Beiträge

Zurück