Перевожу исходники с WIN32 на WINCE. Есть некоторые проблемы, к примеру, в WINCE часто нету функций принимающих multibyte значения, а есть токо для char* и для wchar_t* типов. Или просто нету функции, которая есть в WIN32. Решил написать обёртку такого рода:
(к примеру для функции GetCurrentProcess)
//GetCurrentProcess.h
#pragma once
#if defined(WIN32)
#include <Winbase.h>
#pragma comment(lib,"Kernel32.lib")
#pragma message("Linker: Automatically linking with Kernel32.lib")
#elif defined(WINCE)
#include <Kfuncs.h>
#pragma comment(lib,"Coredll.lib")
#pragma message("Linker: Automatically linking with Coredll.lib")
#endif
Но иногда в WINCE функций нет, а в WIN32 есть:
(для функции _mbscmp)
//_mbscmp.h
#pragma once
#if defined(WIN32)
#include <mbstring.h>
#elif defined(WINCE)
#pragma message("Warning: _mbscmp function doesn't exist in WinCE platform")
#endif
Далее просто включается в код, где используется функция вместо оригинальных заголовков, "обёрточные" заголовки.
Но мне не нравиться #pragma message, будет куча таких ненужных вообщемто сообщений.
Если заменить #pragma message на объявление _mbscmp — будет компилироваться, но не будет линковаться.
Думаю заменить на определение функции, чтобы при её вызове под WINCE компилятор начал ругаться в место определения, но незнаю что написать во внутрь.
//_mbscmp.h
#pragma once
#if defined(WIN32)
#include <mbstring.h>
#elif defined(WINCE)
int _mbscmp(const unsigned char *string1,const unsigned char *string2) {
//что сюда написать?
}
#endif
Но ругаться он должен только при использовании функции.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]