Я только начинаю изучать C, поэтому, надеюсь, это не глупый вопрос. Проблема, с которой я сталкиваюсь, касается файлов заголовков и использования #define для констант. Я прочитал, что я должен использовать следующее, чтобы предотвратить компиляцию моего заголовка более одного раза.Использование define в файле заголовка c
#ifndef NAME_OF_FILE
#define NAME_OF_FILE
.
. //my header file content
.
#endif
Я хочу, чтобы добавить константу, и я считаю, что я бы также использовать #define, такие как,
#ifndef NAME_OF_FILE
#define NAME_OF_FILE
#define NUM_CONST 5 //the constant I want in my header file
.
.
.
#endif
Как знать C, что #define NAME_OF_FILE ссылается на .h файл время #define NUM_CONST 5 - это просто константа? Это из-за значения в конце NUM_CONST? Или у меня все это совершенно неправильно?
Компилятор не знает, что 'NAME_OF_FILE' является специальным. Это только особенность _convention_. Это «блокировка» файла (т. Е. Файл может быть '# include'ed несколько раз, но блокировка препятствует тому, чтобы содержимое между конструкцией блокировки и соответствующей' # endif' было прочитано компилятором более одного раза , На самом деле это препроцессор C. Если вы будете следовать логике шаг за шагом, в первый раз, '# ifndef' истинно, поэтому включено [1]' # define' и остаток. Во 2-й попытке '# ifndef' является ложным и пропускает' # endif' внизу –