Makra WinAPI i problemy z nazwami
• tech • 159 słów • 1 minuta czytania
W ramach wstępu zapraszam do lektury artykułu Marcina Kasperskiego pt. Horror nazewniczy pod windows.
Miałem podobny problem z SendMessage()
w xiT++, przez co początkowo została wykorzystana nazwa sendMessage()
w bibliotece używanej na systemach Microsoftu. I dziś udało mi się na szybko ten problem rozwiązać obejść przy pomocy preprocesora. Wkurzała mnie taka “odmienność” nazwy jednej metody od stylu nazewnictwa reszty.
Ten “magiczny” kod (pochodzący z xiT++):
#ifdef WIN32
// Fixed SendMessage function name problem on Win32
#ifdef UNICODE
bool SendMessageW(const Message& message);
#else
bool SendMessageA(const Message& message);
#endif
#else
bool SendMessage(const Message& message);
#endif
Może komuś się przyda takie szybkie i proste rozwiązanie ;) Choć to jest chamski i brzydki hack!
Niestety jestem na to skazany, bo nie mam innego prostego rozwiązania. Winne temu są makra WinAPI… gdyby zamiast nich wykorzystali jakieś małe funkcje inline do “rozgałęziania” w warunkowej kompilacji wywołań funkcji systemowych na odpowiednią wersję (A/W) to nie byłoby takich dziwnych problemów i hacków… a tak co mi pozostaje?
Komentarze (0)