2013-07-09 13 views
5

mam problem z następującego kodu:Dlaczego Visual C++ zmienia nazwę mojej metody?

class MainWindow 
{ 
... 
private: 
bool CreateWindow(std::string, int, int, int, bool); 
... 
} 

i

bool MainWindow::CreateWindow(std::string title, int width, int height, 
int bits, bool fullscreen) 
{ 
... 

Visual Studio podkreśla definicji metody z powodu następującego błędu:

int reateWindow(std::string title, int width, int height, int bits, bool fullscreen) 
Error: class "MainWindow" has no member called "CreateWindowExW" 

i kompilator wyprowadza następujące :

warning C4003: not enough actual parameters for macro 'CreateWindowW' 
error C2039: 'CreateWindowExW' : is not a member of 'MainWindow' 

Zauważyłem, że jeśli zmienię nazwę metody na coś innego, to nie zaczyna się od dużej litery C, błąd znika. Jestem nowy w rozwoju Windows. Co daje?

+3

TL; DR: ponieważ istnieje makro o tej samej nazwie. –

+3

Głupie makra Windows. – Xeo

+0

Staraj się unikać nazw klas i funkcji, których już używają okna, zapobiegnie innym problemom zastępowania procesora i łącza. – alexbuisson

Odpowiedz

11

Po prostu dlatego, że CreateWindow to makro utworzone przez Microsoft ... Jest zdefiniowane w WinUser.h.

+0

Dziękuję wszystkim, którzy odpowiedzieli! –

+2

Nie zapomnij oznaczyć swojego pytania jako odpowiedzi, aby usunąć je z pytań bez odpowiedzi :-) –

+1

lepiej nabyć rep-pimp, aby uniknąć rep-whoring ;-) – TemplateRex

Powiązane problemy