Доброе время суток, Ilu! Ну вообще в русском MSDNе, я гдето о таком слышал, а еще лучше выучи английский, поначалу трудно будет, но зато сможешь лбой хелп прочесть и MSDN на английском. Ответ отправлен: 29.08.2002, 12:31 Отправитель: Pablo
Вопрос № 204
Сейчас я задам очень сложный вопрос... :) но на который я пока не нашел ответа. может кто-то подскажет... :) есть набор исходников, и в зависимости от архитектуры они подгружают разные инклюды... как мне с помощью определенного дефайна #define PLATFORM IA32 подгружать файлы из разных каталогов. типа того: #include не надо пожалуйста предлагать условные ветвления, это не интересно и не оригинально. Я хочу просто использовать дефайн, чтобы определить путь. чтобы в итоге подгрузился файл можно ли такое реализовать? простое использование дефайна (как написал выше) не проходит. :(
Доброе время суток, Dron! Ну, если #ifdef #endif не подходит, то пиши свой препроцессор, - будет и "интересно", и "оригинально"!!?? Не пойму только - ЗАЧЕМ!!!??? Ответ отправлен: 29.08.2002, 17:00 Отправитель: Yuri Gordienko Отвечает Артём Шегеда
Здравствуйте, Dron!
Вообще-то, нормальные люди при компиляции проекта передают компилятору каталог, в котором следует искать подключаемые файлы. Как правило, это опция компилятора "-i" или "-I" (по крайней мере, для четырёх опробованных мною реализаций компилятора Си это справедливо). А в Make-файле (или BAT, или CMD) создаёшь переменную с именем IncludePath в которую запихиваешь имя папки с твоими полатформо-зависимыми includes. А компилятору отдаёшь уже значение этой переменной. Применительно к DOS и BorlandC - пример. В текущем каталоге создан файл main.c. Созданы три подкаталога: IA16, IA32 и IA64. В каждом из них создан файл inc.h, в котором только одна строка:
#define Message "Платформа IA.."
- естесственно, уникальная для каждого inc.h BAT-файл:
choice /c:123 /N "Выберите
платформу [1-IA16, 2-IA32, 3-IA64]: " if errorlevel 3 goto 3 if errorlevel 2 goto 2 set IncludePath=IA16 goto 0 :2 set IncludePath=IA32 goto 0 :3 set IncludePath=IA64 :0 bcc -I%IncludePath% -IC:\BC\INCLUDE main.c
main.c
#include "inc.h" #include <stdio.h> void main(void) { // Message объявлен в #define в inc.h puts(Message); }
Ответ отправлен: 29.08.2002, 14:28 Отправитель: Артём Шегеда
Форма отправки вопроса
Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook"
и "Microsoft Outlook Express". В программе The Bat!
подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте,
что в некоторых браузерах могут стоять запреты на открытие других
окон, а также "чрезмерное" кэширование данных,
при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet
Explorer 5.0+ или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.