Описание тега include-guards

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

Разница между "ifndef" и "если! определено" в C?

Я видел #ifndef ABC а также #if !defined (ABC) в том же исходном файле C. Есть ли тонкая разница между ними? (Если это вопрос стиля, зачем кому-то использовать их в одном файле)
23 дек '11 в 15:27
1 ответ

Где разместить #include и избыточности в коде (файлы заголовков и реализации)

В настоящее время я прохожу Accelerated C++, и у меня возникли небольшие трудности с пониманием того, где мне обязательно нужно поместить # include (будь то в заголовке и / или исходном файле) и, в основном, излишне ли я. Буду признателен за все ком…
0 ответов

Перевести заголовки на Cython

Реально ли для Cython иметь возможность переводить заголовки C в Cython-директивы? (См. Здесь, в условной компиляции). Аналогичное предложение было сделано и здесь. В моем случае я хотел бы, чтобы эти C-директивы были в моем.h: /* myheader.h */ #def…
2 ответа

Понимание заголовков и включение

Я пытаюсь понять, как на самом деле несколько определений включаемых файлов взаимодействуют, а иногда и сталкиваются. Так что у меня есть пользовательский заголовочный файл file.hгде некоторые функции объявлены в #include guard, Пример: #ifndef FILE…
06 янв '16 в 09:40
3 ответа

Как сократить время компиляции для большой библиотеки C++ отдельных файлов.cpp?

Мы разрабатываем библиотеку C++ с более чем 500 сотнями отдельных файлов.cpp. Каждый из них компилируется и архивируется в статическую библиотеку. Даже при параллельной сборке это занимает несколько минут. Я хотел бы сократить это время компиляции. …
2 ответа

Ошибка C++ LNK2005 при добавлении нового заголовочного файла

Я работаю над проектом для школы. Я знаю о своей циклической зависимости (и я прочитал большинство резолюций здесь для этого ранее), но в настоящее время она работает так, как мне нужно. К сожалению, я почти уверен, что это также причина моих бед. Я…
6 ответов

Проблемы с C++ Header Guard

Я делаю небольшой C++ фреймворк, который содержит много.h и.cpp. Я создал общее включение, которое включает все мои файлы.h, такие как: framework.h #include "A.h" #include "B.h" #include "C.h" каждый заголовок.h защищен включением защиты, таким как …
19 май '10 в 14:41
5 ответов

Оптимизация с несколькими включениями

Я пытаюсь понять, как многократная оптимизация работает с gcc. В последнее время я читал много кода, который включает в себя защиту для стандартных заголовочных файлов, например #ifndef _STDIO_H_ #include <stdio.h> #endif и я пытаюсь выяснить,…
20 дек '13 в 13:43
2 ответа

Бесконечные циклы включения

Возможный дубликат: Циклы файла заголовка C Оригинальный вопрос: У меня всегда были проблемы с пониманием, почему следующее дает ошибки: something.h #ifndef SOMETHING_H #define SOMETHING_H #include "somethingelse.h" #endif somethingelse.h #ifndef SO…
30 окт '11 в 18:40
4 ответа

Подавить предупреждения gcc: "предупреждение: это местоположение предыдущего определения"

Мне нужен набор оберток вокруг стандартных системных вызовов -open,listen и т. Д. Для этого у меня есть несколько "#define", как в: #define open(a,b,c) JCL_Open(a,b,c) Но когда я компилирую заголовок и связанные файлы.c, я получаю следующее предупре…
20 апр '09 в 05:03
1 ответ

Проблемы с заголовком - проглатывание живым

Я полностью в остроумии: я не могу понять, как мои проблемы зависимости. Я читал бесчисленные посты и блоги и переделывал свой код так много раз, что даже не помню, что почти сработало, а что нет. Я постоянно получаю не только ошибки переопределения…
28 окт '13 в 19:45
4 ответа

C++/SDL проблема двойного включения

Я получаю эту ошибку от компилятора: 1>Linking... 1>main.obj : error LNK2005: "int g_win_flags" (?g_win_flags@@3HA) already defined in init.obj 1>main.obj : error LNK2005: "struct SDL_Surface * g_screen" (?g_screen@@3PAUSDL_Surface@@A) alre…
03 ноя '10 в 18:22
2 ответа

C-заголовочные заголовки используются только в заголовочных файлах, но не в.c файлах. Зачем?

Я уже некоторое время использую элементы защиты в заголовочных файлах, и единственная причина, по которой я понимаю, почему они используются, - включить одноразовое включение этого (заголовочный файл с рассматриваемыми элементами защиты) во время ко…
22 янв '14 в 07:03
2 ответа

Внутренняя и внешняя защита

Я слышал, что вы должны предпочесть писать внутренние включающие охранники вместо внешних включающих охранников. Я искал в Интернете, но не нашел ответа на него. Это фрагмент книги C++ Standards от Herb & Andrei "Стандарты кодирования", в которой по…
11 июн '15 в 18:59
2 ответа

Шаблон C++ и включает охранников

Я относительно новичок в C++, поэтому мой вопрос может быть простым; однако я не могу понять, почему мой код не работает, когда я думал, что должен. Пример кода выглядит следующим образом. //a.h #ifndef A #define A template<class T> class a{ p…
01 окт '14 в 01:12
2 ответа

Настройка include-guard для Eclipse CDT

Я хочу автоматически сгенерировать include-guard, создав новый класс C++ с Eclipse/CDT, но я не нахожу способа изменить ${include_guard_symbol} приписывать. Мое желание - это include-guard с префиксом пространства имен, например: #ifndef NAMSPACE1_N…
27 июл '11 в 13:40
4 ответа

Нужно уточнить на #ifndeF#define

Код, который я работаю, имеет несколько заголовков и исходных файлов для разных классов face.cc, face.hh, cell.cc, cell.hh edge.cc edge.hh и заголовки содержат, как это, #ifndef cellINCLUDED #define cellINCLUDED #ifndef faceINCLUDED #define faceINCL…
25 апр '16 в 09:14
1 ответ

Сгенерировать C++ включить защиту заголовков в atom?

Я ищу атомный пакет, который генерирует C++ include guard в заголовочных файлах.h/.hpp. Пакет должен что-то сделать, например взять существующий заголовочный файл C++ и окружить его содержимое соответствующими строками #ifndeF#define #endif. Если пл…
1 ответ

Почему в заголовочных файлах Numeric Recipes нет элементов защиты?

Начинающий программист C++ здесь. Я использую исходный код Numeric Recipes (V3) как часть более крупного модулированного проекта C++. Хотя я постараюсь не вдаваться в подробности моей проблемы, мне любопытно, почему эти файлы заголовков NR не содерж…
1 ответ

ifndef включает охрану в Gnu. Делает разрывы на вложенные условные выражения.

Я пытаюсь реализовать включение охранников в Gnu Make. В этом Makefile первое включение в порядке, а второе - с ошибкой. ifndef INCLUDED INCLUDED = 1 $(info Including) define macro ifneq ($(1),) define inner_macro macro content... endef else define …
13 авг '15 в 17:54