Почему #ifndef и #define используются в заголовочных файлах C ++?

getElementById не является методом элементов HTML. Это метод узла документа. Как таковой вы не можете сделать:

div.getElementById('foo'); // invalid code

Вы можете реализовать свою собственную функцию для поиска DOM путем рекурсивного прохождения через children. В более новых браузерах вы даже можете использовать метод querySelector. Для минимального развития вы можете использовать библиотеки jQuery или sizzle.js (механизм запросов jQuery).

441
задан Brad Solomon 25 July 2019 в 01:41
поделиться

2 ответа

Они называются #include guard .

После включения заголовка проверяется уникальность значения (в данном случае HEADERFILE_H ) определено. Затем, если он не определен, он определяет его и переходит к остальной части страницы.

При повторном включении кода первый ifndef не работает, что приводит к пустому файлу.

Это предотвращает двойное объявление любых идентификаторов, таких как типы, перечисления и статические переменные.

493
ответ дан 22 November 2019 в 23:01
поделиться

Их называют ifdef или включают защиту.

При записи небольшой программы это могло бы казаться, что это не нужно, но поскольку проект растет, Вы могли намеренно или неумышленно много раз включать один файл, который может привести к компиляции, предупреждающей как переменная, уже объявленная.

#ifndef checks whether HEADERFILE_H is not declared.
#define will declare HEADERFILE_H once #ifndef generates true.
#endif is to know the scope of #ifndef i.e end of #ifndef

, Если не объявляется, что означает, #ifndef генерирует верный тогда только часть между #ifndef и #endif, выполняемым иначе нет. Это предотвратит от нового объявления идентификаторов, перечислений, структуры, и т.д.

0
ответ дан Mohit Jain 17 September 2019 в 07:00
поделиться
  • 1
    Не обязательно - опция была бы к , расширяют CI с помощью Вашей собственной Библиотеки Сессии, которая допускает прямой доступ к flashdata после it' s набор. – Repox 28 October 2012 в 14:45