Ich habe ein Problem mit dem folgenden Code:Warum ändert Visual C++ den Namen meiner Methode?
class MainWindow
{
...
private:
bool CreateWindow(std::string, int, int, int, bool);
...
}
und
bool MainWindow::CreateWindow(std::string title, int width, int height,
int bits, bool fullscreen)
{
...
Visual Studio unterstreicht die Methodendefinition mit dem folgenden Fehler:
int reateWindow(std::string title, int width, int height, int bits, bool fullscreen)
Error: class "MainWindow" has no member called "CreateWindowExW"
und der Compiler gibt die folgenden :
warning C4003: not enough actual parameters for macro 'CreateWindowW'
error C2039: 'CreateWindowExW' : is not a member of 'MainWindow'
Ich bemerkte, dass wenn ich den Methodennamen zu etwas anderem ändere, das nicht mit einem Großbuchstaben C beginnt, verschwindet der Fehler. Ich bin neu in der Windows-Entwicklung. Was gibt?
TL; DR: weil es ein Makro mit dem gleichen Namen gibt. –
Dumme Windows-Makros. – Xeo
versuchen, Klassen- und Funktionsnamen zu vermeiden, die Windows bereits verwendet, verhindert andere Pre-Prozessor Substitution und Link-Probleme. – alexbuisson