вы за 15 минут прочли всю книгу?! да вы просто турбо-электровеник какой-то!
я только что ответил уважаемому
Liv, что переменная определяется только один раз, а вот в хидере на нее могут быть ссылки - это уже не определение переменной! под определением переменной я понимаю момент выделения памяти под нее, а под ссылкой - упоминание ее имени. в хидере имеется упоминание имени переменной с указанием extern для него - это означает, что данная переменная существует в проекте, но определена не в этом модуле.
по поводу второго вопроса дочитайте книгу до директив условной компиляции - это будет где-то в разделе про ПРЕПРОЦЕССОР. забегая вперед, поясню:
#ifndef ___TIC5234_H___ - встретив это препроцессор смотрит, определен ли символ (макрос)
___TIC5234_H___? если не определен, то продолжает анализировать следующие строки, а если окажется, что такой символ уже определен, то все строки вплоть до
#endif будут проигнорированы.
#define ___TIC5234_H___ - тут препроцессор вводит определение символа
___TIC5234_H___, т.е. начиная с этой строки он уже существует.
для чего это делается? все просто. если у вас по каким-либо причинам получится так, что
TIC5234.h будет подключен
два или более раза, то без этих конструкций в код программы попало бы два раза (или более) описание ссылок на переменные, что явилось бы ошибкой. при наличии таких конструкций в код программы будут включены только строки
от первого встреченного TIC5234.h, а все последующие будут проигнорированы, т.к. к моменту их обработки символ
___TIC5234_H___ уже будет существовать.
нижние подчеркивания - это не догма, тут просто главное - это обеспечить
уникальность символа, регулирующего игнорирование содержимого хидера. если вы будете использовать, например, символ
IGNORE, а где-то среди других модулей окажется уже такая переменная или константа - ваш хидер будет проигнорирован даже в первом включении, символ-то уже есть! поэтому обычно создают символ из имени файла хидера, добавляя к нему впридачу подчеркивания, чтобы получилось что-то неудобоваримое - врядли вам понравится в своем проекте использовать переменную
___TIC5234_H___ 
кстати, многие редакторы (например, Eclipse) вставляют такое "обрамление" в хидер автоматически - вам и писать ничего не надо!
такой подход позволяет вам не задумываться о том, где и сколько раз происходит подключение вашего хидера.