|
делаем два файла 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