быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||||||||||||||||||||||||||||||||
1 | ||||||||||||||||||||||||||||||||||||
Необходимо разобраться с директивами условной компиляции27.01.2012, 20:51. Показов 3086. Ответов 23
Метки нет (Все метки)
Друзья! Боюсь, что без предисловий не обойтись. Постараюсь, чтобы они были короткими. Поехали:
Часть кода:
Лезу в include\semaphore, вижу:
Ну волт, собсно говоря и всё. В былые времена я бы приписал не задумываясь:
Препроцессорные директивы в C/C++ (#include, #define и прочее) помогут мне просто написать:
0
|
27.01.2012, 20:51 | |
Ответы с готовыми решениями:
23
Немогу разобраться с директивами Директивы условной компиляции Аналог условной компиляции Q_OS_XXX Применение директив условной компиляции |
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
27.01.2012, 21:28 | 2 |
Этот макрос определяет сам mingw32
Там же написано в комментарии, что при сборке библиотеки pthread всё внутри уже определено в другом месте, где этот макрос и задается.
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
||||||
27.01.2012, 21:29 | 3 | |||||
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
27.01.2012, 21:55 [ТС] | 5 | |||||
retmas, а как определил? Мне чтобы знать на будующее
Добавлено через 14 минут ...А вообще, retmas, это как-то не того... Я увидел
__MINGW32__ А тут получается, mode_t определяется безусловно. ОНо, конечно, компильнётся, но моя цельь была не столь компиляция, сколько разобраться с директивами, да вот хотя бы с той же __MINGW32__ Она ведь не определена нигде! Так как сделать, чтобы она была определена?
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
27.01.2012, 22:01 | 6 |
не смотри на конкретные реализации. маны - вот твой источник инфы.
semaphore.h не обязан хоть как то (явно или косвенно) определять, что такое mode_t Добавлено через 1 минуту кстати semaphore.h - думаю не последний заголовок, где ты столкнешься с подобным
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
||||||
27.01.2012, 22:01 | 7 | |||||
kravam, попробуй собрать
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
27.01.2012, 22:07 [ТС] | 8 |
retmas, у меня windows, вопрос остался
Добавлено через 2 минуты NoMasters, я не понимаю, у нас есть возможность разобраться, так почему бы не разобраться? Я хочу разобраться, а не обманывать проепроцессор. Кстати раньше я всегда так и делал, если чё-то было неопределено или определено условно, я просто рядышком писал безусловное определение и всё, а теперь хочу понять как надо сделать правильно.
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
27.01.2012, 22:09 | 9 |
kravam, чего ты не понимаешь? Ты тот кусок кода собрал? Строку выводит?
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
27.01.2012, 22:10 | 10 |
ну и что, что windows. ты ж используешь реализации posix ф-ий (или я не прав?). а маны и в сети есть. про __MINGW*__ тебе уже ответили - определена всегда, когда используешь соответствующую mingw сборку
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
27.01.2012, 22:20 | 11 | |||||
может перед ключением sepaphore.h стоит включить файл, в котором задефайнен PTW32_CONFIG_H.
Гугл ссылается на некий config.h. Может где-то в другом месте есть дефайн. т.е. чтобы собиралось может оказаться выжным порядок включения инклудов
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
27.01.2012, 22:23 | 12 |
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|
27.01.2012, 22:25 | 13 |
PTW32_CONFIG_H не надо нигде определять. он определен при сборке win pthreads. иначе он не определен и не должен быть определен
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|||||||||||||||||||||
27.01.2012, 22:29 [ТС] | 14 | ||||||||||||||||||||
выводит
Да вы чё прицепились к этой __MINGW32__?, речь идёт о цепочке определений (и если уж рассматривать эти макросы по отдельности, тогда уж надоначинать с HAVE_MODE_T, ибо он В КОНЕЧНОМ ИТОГЕ определяет, будет определён тим mode_t или нет) 1) Сперва препроцессор смотрит, определена ли PTW32_CONFIG_H
И слава Богу у меня это всё под рукой оказалось я могу всё это выяснить, а дальше не могу. Размышляю так: 1) Коль скоро mode_t неопрелделено значит, неопределено и HAVE_MODE_T 2) Коль скоро HAVE_MODE_T неопределено, неопределено и __MINGW32__ 3) Коль скоро __MINGW32__ неопределено, неопределено и PTW32_CONFIG_H (retmas, где я неправильно рассуждаю?) Всё, выводы закончились. Что значит "Неопределено PTW32_CONFIG_H", я не знаю. Может, мне подключить что надо, может прописать что надо. К советам: напиши
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
||||||
27.01.2012, 22:32 | 15 | |||||
ну т.е. при сборке в 32битной винде должна срабатывать ветка.
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
||||||
27.01.2012, 22:35 [ТС] | 16 | |||||
DU,именно должна эта ветка сработать, но не срабатывает!
Добавлено через 2 минуты Да не, у меня именно mingw и
0
|
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
|
|||||||||||
27.01.2012, 22:39 | 17 | ||||||||||
kravam, HAVE_MODE_T определяется тут:
0
|
Псевдослучайный
1946 / 1145 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
|
|
27.01.2012, 22:40 | 18 |
kravam, всё происходит правильно. Выполняется ветка, определяющая, что у тебя уже должен быть определён mode_t. Из того самого sys/types.h, о котором писал retmas.
0
|
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
|
|
27.01.2012, 22:45 | 19 |
а как правильно переводится:
К чему тут относится слово "который"? к копипасту или к config.h. Если второй вариант, то получается, что нужно как-то задействовать config.h
0
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
27.01.2012, 22:52 [ТС] | 20 |
Хм, получается последняя директива такая: если
HAVE_MODE_T неопределено, то следует определить mode_t Так, mode_t не определяется. Ладно, то есть мы всё делаем правильно и необходимо определить mode_t вручную или подключить sys\types.h (что по-моему одно и то же) А тогда возникает вопрос: смотри, препроцессор НАРОЧНО не определяет mode_t, а мы как бы наперекор идём препроцессору; тебя не смущает это? но теперь осталось только вернуться к вопросу- а откуда было узнано о sys\types? По-моему где-нибудь в комментах semaphore.h должна была быть строка "подключите sys\types.h", тогда всё стало бы на свои места, но ведь такой строки нет!
0
|
27.01.2012, 22:52 | |
27.01.2012, 22:52 | |
Помогаю со студенческими работами здесь
20
arduino ошибка условной компиляции в NewLiquidCrystal [РЕШЕНО] Директивы условной компиляции в AVRSTUDIO4 Какие директивы условной компиляции Вы знаете? Символ условной компиляции для конфигурации Trial Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |