Makro-Substitution bedeutet, dass der gesamte Code (der sich im Define befindet) jedes Mal an einer bestimmten Stelle im Programm ersetzt wird. Anstatt also eine Funktion zu erstellen und sie aufzurufen, kopieren Sie diese Funktion innerhalb des Codes viele Male, als ein Stück Code.
Und wenn Sie aus einem Makrozurückkehren, wird es aus dem gesamten Codezurückkehren, in dem dieses Makro eingefügt ist.
Makro-Substitution bedeutet, dass der gesamte Code (der im Define steht) jedes Mal an der angegebenen Stelle des Programms ersetzt wird. Anstatt eine Funktion zu erstellen und sie aufzurufen, kopieren Sie diese Funktion mehrmals in den Code, als ein Stück Code.
Und wenn Sie aus einem Makrozurückkehren, ist dies eine Rückkehr aus dem gesamten Code, in den dieses Makro eingefügt ist.
Es stellt sich heraus, dass Sie keine Makrofunktion schreiben können.
Wenn man 2 Makros schreibt, ohne in eine neue Zeile zu springen, erhöht sich die Anzahl der Zeilen stark, was das Programm erheblich verlängert, hier ein Beispiel
#define I int#define B bool//это просто пример ни в коем случае не воспринимайте всерьёз
Ist es möglich, einen Variablennamen in eine Zeichenkette umzuwandeln?
So funktioniert das nicht:
#define p_func(NAME) Print("This is ##NAME")
//+------------------------------------------------------------------+voidOnStart()
{
int QWERTY;
int zxcvbn;
p_func(QWERTY);//This is ##NAME
p_func(zxcvbn);//This is ##NAME
}
Seric29: Leute, ich möchte ein Makro von makros(a) schreiben und es wird wie folgt funktionieren: wenn a gleich 1 ist, wird es einen beliebigen Wert vom Typ int zurückgeben, wenn a gleich 2 ist, wird es einen beliebigen Wert vom Typ double zurückgeben, wenn a gleich 3 ist, wird es einen beliebigen Wert vom Typ bool zurückgeben. Ist es möglich, dies zu tun?
Seric29: Ich möchte ein Makro makros(a) schreiben, das wie folgt funktioniert: wenn a gleich 1ce ist, gibt das Makro einen beliebigen Wert vom Typ int zurück, wenn a gleich 2ke ist, gibt das Makro einen beliebigen Wert vom Typ double zurück, wenn a gleich 3ke ist, gibt das Makro einen beliebigen Wert vom Typ bool zurück. Ist es möglich, dies zu tun?
In µl kann man auf GET_EXPAND verzichten, aber das ist µl-spezifisch und daher korrekter. Nun, μl Makros sind sehr begrenzt aufgrund des Fehlens von Komma-Operator (obwohl durch Krücken ...).
ZZY: und das ist natürlich alles Kompilierzeit.
ZZZY: Übrigens, wenn es einen Ghost Operator gäbe, könnte man das machen:
class Q{
public:
operatorint();
operatordouble();
operatorbool();
};
...
Q q;
int i = q; // call operator intdouble d = q; // call operator doublebool b = q; // ...
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Geben Makros Werte zurück?
Hier ist ein Beispiel für einen Code
Hier ist ein Codebeispiel
Makro-Substitution bedeutet, dass der gesamte Code (der sich im Define befindet) jedes Mal an einer bestimmten Stelle im Programm ersetzt wird. Anstatt also eine Funktion zu erstellen und sie aufzurufen, kopieren Sie diese Funktion innerhalb des Codes viele Male, als ein Stück Code.
Und wenn Sie aus einem Makrozurückkehren, wird es aus dem gesamten Codezurückkehren, in dem dieses Makro eingefügt ist.
Makro-Substitution bedeutet, dass der gesamte Code (der im Define steht) jedes Mal an der angegebenen Stelle des Programms ersetzt wird. Anstatt eine Funktion zu erstellen und sie aufzurufen, kopieren Sie diese Funktion mehrmals in den Code, als ein Stück Code.
Und wenn Sie aus einem Makrozurückkehren, ist dies eine Rückkehr aus dem gesamten Code, in den dieses Makro eingefügt ist.
Es stellt sich heraus, dass Sie keine Makrofunktion schreiben können.
Es stellt sich heraus, dass es keine Möglichkeit gibt, eine Makrofunktion zu schreiben.
Eine Makro-Substitution ist das Ersetzen eines Textes durch einen anderen (im Quellcode), sie kann per Definition keine Funktion sein.
Wenn man 2 Makros schreibt, ohne in eine neue Zeile zu springen, erhöht sich die Anzahl der Zeilen stark, was das Programm erheblich verlängert, hier ein Beispiel
Makro B funktioniert nicht mehr.
Ist es möglich, einen Variablennamen in eine Zeichenkette umzuwandeln?
So funktioniert das nicht:
Leute, ich möchte ein Makro von makros(a) schreiben und es wird wie folgt funktionieren: wenn a gleich 1 ist, wird es einen beliebigen Wert vom Typ int zurückgeben, wenn a gleich 2 ist, wird es einen beliebigen Wert vom Typ double zurückgeben, wenn a gleich 3 ist, wird es einen beliebigen Wert vom Typ bool zurückgeben. Ist es möglich, dies zu tun?
Und wozu? Und wozu? Wo werden Sie es einsetzen?
Ist es möglich, einen Variablennamen in eine Zeichenkette umzuwandeln?
Ich möchte ein Makro makros(a) schreiben, das wie folgt funktioniert: wenn a gleich 1ce ist, gibt das Makro einen beliebigen Wert vom Typ int zurück, wenn a gleich 2ke ist, gibt das Makro einen beliebigen Wert vom Typ double zurück, wenn a gleich 3ke ist, gibt das Makro einen beliebigen Wert vom Typ bool zurück. Ist es möglich, dies zu tun?
In µl kann man auf GET_EXPAND verzichten, aber das ist µl-spezifisch und daher korrekter. Nun, μl Makros sind sehr begrenzt aufgrund des Fehlens von Komma-Operator (obwohl durch Krücken ...).
ZZY: und das ist natürlich alles Kompilierzeit.
ZZZY: Übrigens, wenn es einen Ghost Operator gäbe, könnte man das machen: