Шутить изволите? :) если нет, так и быть раскладываю все по полочкам....(+) кстати я стараюсь никогда не писать H файлов без проверки типа #ifndef __MYFILE_H #define __MYFILE_H ....теперь понятно о чем идет речь?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SOIC 13 апреля 2004 г. 20:05
В ответ на: Посмотрите на h файлы стандартных библиотек. отправлено Штуша-Кутуша 13 апреля 2004 г. 19:43

делаем два файла 1.c и 2.c в каждом из которых подключаем #include "myfile.h"

делаем myfile.h:

#ifndef __MYFILE_H_
#define __MYFILE_H_

unsigned char MyVar;

#endif

компилим эти два С файла, они компилятся без проблем, ОДНАКО ЗАМЕТИМ ЧТО точно также ОНИ БЕЗ ПРОБЛЕМ БУДУТ КОМПИЛИТСЯ И ЕСЛИ УБРАТЬ #ifdef...
линкуем, что получаем в результате линковки? верно - ОШИБКУ!!!

тот #ifdef о котором вы говорили предназначен для того чтобы H файл не включался несколько раз в один и тот-же C файл....

а тут речь вообще о другом - речь о том что компилятор не может понять что посути является аналогом ситуации когда в H файле описан прототип переменной: extern char MyVar; а в C файле описана сама переменная: char MyVar; и компилятор при компиляции выдал бы ошибку что переменную MyVar нельзя делать типом char, потому что она уже описана как переменная другого типа (не char), хотя на самом деле она описана как char....

надеюсь теперь понятно в чем проблема?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru