| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > Использование #include в eVC++... Как? |
| Автор: AndronST 7.8.2005, 14:38 |
| Приветсвую форумчан и гостей форума! Недавно пересел с Builder на eVC++, естессно полезли грабли... Недавно наткнулся на самые большие - работа c #include... Собсна вопрос: как нужно инклудить заголовочные файлы, чтобы не возникало подобной ошибки : Calculator.obj : error LNK2005: "class CCalculator * Calculator" (?Calculator@@3PAVCCalculator@@A) already defined in adderdlg.obj У меня есть 2 файла с моими классами, хедэр одного проинклуден в хедэре другого и этот уже инклудится в других файлах... А поскольку клас из второго файла используется в одном модуле... короче, получается мой класс 2 проинклуденным в одном файле... В Билдере это не фатально, а здесь билд не проходит... Люди, подскажите плиз как нуна с инклудами здесь обращаться? |
| Автор: sergejzr 7.8.2005, 15:01 | ||
Чтобы не подключалось по несколько раз одно и тоже в начале каждого файла пиши:
Где FILENAME_H естественно название твоего файла. |
| Автор: AndronST 7.8.2005, 15:32 |
| 2sergej.z Thanks! Навел на мыслю на правильную Ларчик как всегда открывался просто... меня переклинило, и я в заголовочнике объявил переменную... она то как раз и объявлялась несколько раз... поставил extern и все, естессно, заработало |
| Автор: Denn 8.8.2005, 08:25 |
| sergej.zЛучше #pragma once |
| Автор: sergejzr 8.8.2005, 11:24 | ||
Denn, не лучше |
| Автор: ManiaK 8.8.2005, 11:27 | ||
Согласен. Это инициатива мелкософта. Попользовался неделю - отучивался месяц. Лучше не использовать. |
| Автор: Denn 8.8.2005, 12:36 |
| Почему? Для совместимости с другими компиляторами? |
| Автор: ManiaK 8.8.2005, 12:58 | ||
Совместимость тут особой роли не играет. Просто лучше не брать вредных привычек, чтобы не отвыкать от них. |
| Автор: Амортизатор 8.8.2005, 16:02 |
| Почему же не играет? Самое лучшее - старательно следовать родному стандарту языка хотя бы в синтаксисе, чтобы не подсесть на "удобные" фичи разных IDE. Ибо IDE - сегодня есть завтра нет, а С++ - вечен. |
| Автор: Earnest 9.8.2005, 06:54 |
| Согласна насчет стандарта в коде. Однако возможности IDE тоже грех не использовать. Для ленивых (сама такая) напоминаю, что IDE - штука расширяемая. Можно написать команды, которые в пустые файлы вставляют шаблонный текст, сгенерированный по каким-то правилам. Например, у нас в конторе макрос в h-файлы вставляет "скобки" #ifndef XXX - #endif, в cpp - слова про DEBUG_NEW, а также добавляет теги для VSS, чтобы записывалось, кто файл трогал и комментарии по этому поводу. |