Сделал драйвер, попытался собрать релиз, наткнулся на неприятный сюрприз, перестал компилироваться, жалуется на типы переменной, которая объявлена в одном из хидеров, дебажная не жалуется и нормально собирает. Свойства проекта под релизом и дебагом одинаковы. Есть подозрения, что при релизной сборке хидеры компилятором просматриваются в другом порядке, отсюда и проблема с типом. Кто-нибудь сталкивался с такой проблемой? Что за чудеса? Можно конечно посмотреть в файл мониторе, но только что это даст? Допустим будем мы знать, что они открываются компилятором в разной последовательности, только что это даст для решения проблемы.
Ошибка такая: Error 31 error C2061: syntax error : identifier 'g_mainAnswer' d:\...\common\Answers.c 7 жаловался на этот кусок: _LIST_QUEUE_ANSWER g_mainAnswer; пока не сделал так: struct _LIST_QUEUE_ANSWER g_mainAnswer; Почему так?
В Си нужно объявлять со struct. Почему это прокатило в релизе - хз, скорее всего всё-таки не идентично в настройках проекта.
еще такую особенность заметил в студии, переменные в функции нужно обязательно объявлять в начале функции. Если объявление переменной объявлено позже, чем например вызов какой-нить функции в этой функции, то происходит ошибка. Вот такие дела. Типа требует строгого порядка.
Да, но у меня в студии все настройки и для релиза и для дебага указаны как компилировать только как С.
neutronion Код (Text): typedef struct _LIST_QUEUE_ANSWER { BYTE Reserved; } LIST_QUEUE_ANSWER, *PLIST_QUEUE_ANSWER; LIST_QUEUE_ANSWER g_mainAnswer; PLIST_QUEUE_ANSWER pmainAnswer; и все будет тип_топ. поставь c++ и радуйся for (itn i=0