Ich möchte eine C++ Makro-Funktion zu debuggen erstellen, und ich möchte es, wie dies funktioniert:Eine Zeile Debug-Makro
int main(){
int a = 3, b = 5, c = 7;
string s = "<";
print(a,s,b);
print(a,s,b,s,c);
}
OUTPUT:
3 < 5
3 < 5 < 7
ich viel über variadische Makros gelesen habe, aber alles, was ich versucht zu programmieren, würde überhaupt nicht funktionieren.
Ich dachte über die Verwendung von Lambda, aber nicht mit Algorithmus, um es zu tun.
Ich brauche es wie ein Code-Zeile, cos es nur für das Debuggen ist und mehr als dass ich eine komplexere Funktion schaffen könnte, aber ich denke, das muss möglich sein ...
Ein Makro kann keinen Laufzeittyp wie 'std :: string' enthalten. Lambdas sind auch eine Laufzeitsache. Makros dienen zur Vorverarbeitung, lassen vor jeder Kompilierung die Laufzeit frei. – Downvoter
was ist mit char *? oder Wörter, die keine Zeichenkette sind, zum Beispiel print (abc), wo abc wie #abc behandelt werden kann. – Daniel
Wenn 'abc' wie' # abc' behandelt werden kann, dann ist es etwas vom Präprozessor. 'char *' kann das auch nicht machen. Auf "int" kann auch vom Preprozessor nicht zugegriffen werden. Sie könnten ein Analyseprogramm schreiben, um die Werte von Variablen zu einem bestimmten Zeitpunkt während der Ausführung des Programms herauszufinden, oder einfach einen Debugger oder etwas verwenden, das zur Laufzeit funktioniert. Der C-Präprozessor hat seine Grenzen. [m4] (http://www.gnu.org/software/m4/m4.html) ist eine nette Alternative, die hier nützlich sein könnte. – Downvoter