Советы по использованию препроцессора #ifndef - PullRequest
0 голосов
/ 05 апреля 2011

Я изучаю C и надеюсь, что кто-нибудь может объяснить, в чем логика использования #ifndef?

Я также нахожу много программ на C, которые я смотрел, люди, кажется, следуют соглашению, используя имя файла после #ifndef, #define и #endif. Есть ли какое-либо правило или совет, как выбрать это имя?

#ifndef BITSTREAM_H
#define BITSTREAM_H

#include <stdio.h>
#include <stdint.h>

/*Some functions*/

#endif

Ответы [ 5 ]

5 голосов
/ 05 апреля 2011

Заголовочные файлы часто используют такую ​​логику, чтобы избежать включения более одного раза.Когда исходный файл включается в первый раз, имя не определяется, поэтому оно определяется, и выполняются другие действия.В последующие времена имя определяется, поэтому все, что пропущено.

2 голосов
/ 05 апреля 2011

В частности, тот, который вы разместили, называется Включить охрану .

1 голос
/ 05 апреля 2011

Термин для того, что вы ищете, - это Директивы препроцессора.

#ifndef не обязательно должен сопровождаться именем файла, например, обычно встречается #ifdef WINDOWS или #ifndef WINDOWS,и т.д.

0 голосов
/ 05 апреля 2011

Том Зыч: «Файлы заголовков часто используют такую ​​логику, чтобы избежать включения более одного раза.»

Это действительно так, но на самом деле это необходимо только для «публичных» заголовков, таких как заголовки для библиотечных функций.где у вас нет никакого контроля над тем, как включены заголовки.

Этот трюк не нужен для заголовков, используемых в проектах, где вы можете контролировать, как все включено.(Если они используются за пределами общедоступных заголовков, это не распространено).

Если вы не будете использовать их в «частных» заголовках, вы, скорее всего, будете включать заголовки менее случайным образом.

0 голосов
/ 05 апреля 2011

#ifndef означает «если не определено».Обычно используется, чтобы избежать нескольких include файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...