Что такое защитный блок для заголовочного файла в C ++? - PullRequest
5 голосов
/ 21 октября 2011

Я пытаюсь создать класс C ++, используя IDE Code :: Blocks, и есть поле с именем «Guard block».Я провел поиск и не смог найти никакой полезной информации.Для чего это поле?Благодарю.

Ответы [ 2 ]

11 голосов
/ 21 октября 2011

Защитные блоки используются для защиты от включения файла заголовка несколько раз одним и тем же модулем компиляции (файл c ++). Они выглядят примерно так:

// Foo.h
#ifndef INCLUDE_FILE_NAME_HERE_H_
#define INCLUDE_FILE_NAME_HERE_H_

class Foo
{
};


#endif

Если вы включите один и тот же файл в несколько файлов, вы получите ошибку множественного определения. Использование включенных защитных устройств не обязательно в небольших проектах, но становится критически важным в любых средних и крупных проектах. Я обычно использую его в любых заголовочных файлах, которые я пишу.

1 голос
/ 21 октября 2011

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

Проблема с несколькими включениями одного и того же файла заключается в том, что один и тот же символ определяется несколько раз.

Охранные предложения можно обрабатывать с помощью операторов #define и #ifdef, но намного проще с нестандартным, но универсальным, #pragma once.

// foo.h
#pragma once

int foo(void);
// etc.
...