|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
15.05.2009, 22:59 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
раздельная компилляция
сейчас я учусь делать раздельную компилляцию программы. разбиваю её на несколько файлов и по-отдельности компиллирую. у меня вопрос:
что делает #infdef, #endif и как он полностью расшифровывается и что делает #define |
15.05.2009, 23:04 | #2 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Код:
|
15.05.2009, 23:32 | #3 | |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Код:
Код:
Все вместе звучит так: Если не определена константа protorip, значит этот файл еще не был подключен. Значит этот код нужно скомпилировать. Но чтобы избежать повторного включения, определим эту самую константу protorip.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
|
15.05.2009, 23:42 | #4 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
создал ещё 2 файла, но они почему-то по-отдельности не компиллируются.. выдаёт ошибку на месте #include "prototip.h"
Код:
и вот 2я часть проги Код:
|
15.05.2009, 23:45 | #5 |
Заблокирован
Регистрация: 21.11.2008
Сообщений: 4,986
|
Директива #define имеет возможность добавления константы(в С не было возможности обьявления констант ключевым словом const), проще говоря, определяет макроимя.
С помощью #endif- завершает блок условной компиляции. #ifndef- это модификация условия компиляции когда макроимя не определено(#ifdef- когда макроимя определено). Все диррективы препроцессора начинаются с #(в том числе и #if). p.s. Как можно изучать раздельное компилирование, не зная для чего предназначенны эти диррективы? Читаем книжки- там все подробно описанно... |
15.05.2009, 23:47 | #6 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
и паралленльно один вопрос.. каком образом компиллятор находит тот файл, в котором содержатся прототипы???
ведь мы просто пишем #include "prototip.h" и не указываем путь к нужному файлу.. ведь компиллятор же не будет по всему жёсткому искать этот файл?? каким образом тогода он его находит? |
15.05.2009, 23:52 | #7 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Вы противоречите сами себе. Определяет макрос и добавляет константу - разные вещи. Директива #define - именно создает макрос, но не создает константную переменную (не выделяет память). Модификатор const, который, кстати всегда был в Си, делает из объявления переменной константу (т.е. запрещает изменение переменной после объявления)
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
15.05.2009, 23:55 | #8 | ||
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Цитата:
Цитата:
И что значит "вторая часть проги"? Программа в одном файле?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
||
15.05.2009, 23:56 | #9 | ||
Заблокирован
Регистрация: 21.11.2008
Сообщений: 4,986
|
Цитата:
например: Код:
Цитата:
p.s. Мы учебник хоть раз брали в руки? Последний раз редактировалось vasek123; 16.05.2009 в 00:21. |
||
15.05.2009, 23:56 | #10 | |
Заблокирован
Регистрация: 21.11.2008
Сообщений: 4,986
|
Цитата:
Код:
Модератору: удалите лишнее сообщение, случайно создал Последний раз редактировалось vasek123; 16.05.2009 в 01:43. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C++. Наследование. Раздельная компиляция | Matthew | Помощь студентам | 0 | 08.05.2009 21:03 |