Fehler, Irrtümer, Fragen - Seite 2865
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Es ist nicht möglich, ein neues Produkt für den Marktplatz zu erstellen, es wird ein Fehler 500 angezeigt.
Das Produkt wurde erstellt und geprüft, es heißt, dass es veröffentlicht wurde, aber wenn Sie auf den Link klicken, erhalten Sie die Antwort 500.
Funktioniert von oben nach unten als Textersetzung. D.h. "TMP" wird durch "VALUE" ersetzt.
Dies ist kein Compiler - es ist ein Präprozessor)
wird zu
und der WERT ist nicht definiert.
Wie soll undef funktionieren?
Wie soll undef funktionieren?
Bis zu diesem Punkt findet eine "Textersetzung" statt.
Es ist kein Compiler - es ist ein Präprozessor)
wird zu
und der VALUE ist undefiniert.
Wenn ich es richtig verstehe, ist der Wertetyp VALUE*2 const und an die Substitution selbst gebunden, d.h. der VALUE ist auch eine Konstante. Der Compiler erstellt zwei Konstanten.
Wenn ja, muss es eine neue Substitution erstellen.
#define VALUE VALUE1
Und es ist nicht korrekt, wenn VALUE oberhalb des Codes als Konstante definiert wurde.
Bis zu diesem Punkt findet eine "Textersetzung" statt.
Stimmt nicht überein, ändert TMP inVALUE in der Zeile "#define VALUE (TMP*2)", die danach kommt.
Das ergibt keinen Sinn, denn in der Zeile "#define VALUE (TMP*2)", die danach kommt, wird TMP zuVALUE.
Und so gehen die Ersetzungen weiter und weiter, bis sie alle enden.
Es gibt einen Code:
Die erste Ersetzung ändert VALUE in 10 im gesamten Code bis zu #undef VALUE, so dass dies übrig bleibt:
Mit der nächsten Substitution wird der TMP auf 10 geändert. Es stellt sich heraus
Was mache ich falsch?
Es gibt einen Code:
Die erste Ersetzung ändert VALUE in 10 im gesamten Code bis zu #undef VALUE, so dass dies übrig bleibt:
Mit der nächsten Ersetzung wird der TMP auf 10 geändert. Es stellt sich heraus
Was mache ich falsch?
TMP wird nicht durch 10 ersetzt, sondern durch den WERT, aber wenn der WERT definiert ist (was sehr mühsam ist), ist es 10.
Schauen Sie sich diese Schritt für Schritt an:
Der Präprozessor fügt Print
und ersetzt dann, wiederum ohne Tricks, was? Richtig:
und löscht dann alle Präprozessor-Direktiven, und erst danach erhält der Compiler dies:
TMP ist nicht 10, sondern VALUE wird durch TMP ersetzt, und wenn VALUE definiert ist (was ein Problem darstellt), ist es 10
Schauen Sie sich diese Schritt für Schritt an:
Der Präprozessor fügt Print
und ersetzt dann, wiederum ohne Tricks, was? Richtig:
und löscht dann alle Präprozessor-Direktiven, und erst danach erhält der Compiler dies:
Das nennt man nicht "von oben nach unten".
Das nennt man nicht Top-Down.
Verzeihung, ich bin beim Versuch, mich zu erklären, durcheinander gekommen)))
Ein weiteres Mal:
Zum Zeitpunkt der zweiten VALUE-Definition ist das VALUE-Makro noch nicht definiert, so dass VALUE definiert ist als
(VALUE*2)
denn TMP wurde und wird durch WERT definiert.
Aber TMP wird nach der zweiten VALUE-Definition erweitert zu
(TMP*2)
(Etwa so))
Der Präprozessor trägt nur ein, was er hat, und es spielt keine Rolle, wie und wo es definiert ist. Deshalb muss man damit vorsichtig sein. Beispiel:
und jetzt fügen wir der Funktion noch etwas Böses hinzu, nämlich einen Nebeneffekt
Und das ist nur eine Aufschrift, aber was ist, wenn die Einzahlung von dieser Funktion abhängt?