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)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/