Директивы #ifdef, #if defined(), ...
От: Аноним  
Дата: 19.12.11 08:56
Оценка:
Всем привет!

Один и тот же исходник (*.cpp) компилируется и в проекте для "большой" Windows, и для WinCE. Те куски кода, которые зависят от платформы разделяются следущим образом (небольшой пример):

#ifdef _WIN32_WCE // ветка A
                unsigned long nIdStreamOut;
                if ( !(CreateThread(0, 0, func, (void*) params, 0, &nIdStreamOut)) )
#else // ветка B
                unsigned nIdStreamOut;
                if ( !(_beginthreadex(0, 0, func, (void*) params, 0, &nIdStreamOut)) )
#endif


И компилятор доволен. Но есть необходимость (иногда) "идти" по ветке A в проекте для "большой" Windows. Что-то наподобии такого:

#define BIGWIN_SIMULATOR 1

#ifdef _WIN32_WCE || BIGWIN_SIMULATOR // это, разумеется, псевдокод
#else
#endif


Как директивами условной компиляции решить эту задачу?

Заранее спасибо!
Re: Директивы #ifdef, #if defined(), ...
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 19.12.11 09:00
Оценка: +1
Здравствуйте, Аноним, Вы писали:

А>#ifdef _WIN32_WCE || BIGWIN_SIMULATOR // это, разумеется, псевдокод


#if defined(_WIN32_WCE) || defined(BIGWIN_SIMULATOR)
The God is real, unless declared integer.
Re[2]: Директивы #ifdef, #if defined(), ...
От: rus blood Россия  
Дата: 19.12.11 15:13
Оценка:
Здравствуйте, netch80, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


А>>#ifdef _WIN32_WCE || BIGWIN_SIMULATOR // это, разумеется, псевдокод


N>#if defined(_WIN32_WCE) || defined(BIGWIN_SIMULATOR)


... || (defined(BIGWIN_SIMULATOR) && BIGWIN_SIMULATOR==1)
Имею скафандр — готов путешествовать!
Re[2]: Директивы #ifdef, #if defined(), ...
От: Vain Россия google.ru
Дата: 19.12.11 18:18
Оценка:
Здравствуйте, netch80, Вы писали:

А>>#ifdef _WIN32_WCE || BIGWIN_SIMULATOR // это, разумеется, псевдокод

N>#if defined(_WIN32_WCE) || defined(BIGWIN_SIMULATOR)
Лучше не так, а так:
#if defined(_WIN32_WCE) || BIGWIN_SIMULATOR || !defined(BIGWIN_SIMULATOR) && 0/BIGWIN_SIMULATOR

и объявлять BIGWIN_SIMULATOR, либо 0, либо 1.
Если вдруг BIGWIN_SIMULATOR необъявлен по ошибке, то не скомпилируется.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.