Ich habe eine seltsame Fehlermeldung von gtest erfahren. KompilierenWarum mag gtest meinen Ausdruck nicht?
EXPECT_EQ(MyVal,0xe-2);
Ergebnisse in Fehlermeldung:
unable to find numeric literal operator 'operator"" -2'
während
EXPECT_EQ(MyVal,0xe -2);
und
EXPECT_EQ(MyVal,0xf-2);
kompilieren in Ordnung. Irgendwelche Ideen? (Vielleicht versucht es zu potenzieren?)
Bis jetzt dachte ich, dass C++! Allgemein! ignoriert Leerzeichen. Wo kann ich die Fälle finden, wenn nicht? – katang
Danke, obwohl ich es nicht vollständig verstehe. Wenn es ein Token ist, warum sucht die Verarbeitung nach dem Operator? Wenn die Vorverarbeitung Ausnahmen wie 'e-2' berücksichtigt und das Ergebnis falsch ist; warum nicht versuchen, analog mit 'f-2' zu interpretieren? In der dargestellten Weise wird ein rechtlicher Ausdruck aufgrund eines inkonsequenten Präprozessors als falsch gewertet. – katang
Der Fehler 'literal operator "" 'bezieht sich auf eine C++ 11-Funktion, die benutzerdefinierte Literalkonvertierungsoperatoren erlaubt, bei denen es sich um Strings handelt, die an numerische Literale angehängt werden (wie die Längen- und Vorzeichen-Suffixe). Afaik, ein Literaloperator muss mit einem Buchstaben oder "$" beginnen, daher ist die Fehlermeldung etwas merkwürdig. Warum es nicht einen anderen lex versucht, ist die einzige Antwort "weil das ist, was der Standard sagt". C++ versucht jedoch nie, herauszufinden, was Sie gemeint haben könnten, also ist es konsistent. – rici