Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

include guard - C++

21.08.2012, 21:32. Просмотров 1325. Ответов 4
Метки нет (Все метки)

Объясните пожалуйста попонятнее как использовать include guard. Много всего пересмотрел а понять не могу. Как мне Одно и тоже подключение к файлу использовать несколько раз в разных файлах?

Если я просто и в одном и в другом файле прописываю include... Мне выдают ошибку, что эта функция уже имеет текст реализации
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2012, 21:32     include guard
Посмотрите здесь:

Guard для мьютекса - C++
Собственно нужно написать гвард для мьютекса. Если я правильно понимаю, в конструкторе нужно принять ссылку на мьютекс и...

#include - C++
не понимаю какие <stdio.h>,<time.h> и т.д использовать. пыталась найти их характеристики в интернете, но толкового ответа не нашла,...

#include в C++ - C++
Здраствуйте, скажите пожалуйсто какие #include являются основными, я открыл папку include у себя в компелятори, там кучи файлов, все...

Include - C++
Вот давно хотел разобраться. Вот допустим есть у меня 6 файлов A.h A.cpp ,B.h B.cpp ,C.h C.cpp , в каждом h файле описан класс , а в cpp...

INCLUDE - C++
Подскажите что обозначаеть include . #include <stdio.h> #include <string.h> #include <stdlib.h> #include <crypt.h> #include...

Директива include - C++
Допустим я создаю файл header.h:int N();, а так же файл header.cpp:#include "header.h" int N() { return 2; } Каким...

#include<iomanip> - C++
Что за библиотека iomanip ? Что она делает ?

Переполнение include - C++
Здравствуйте! Такой вопрос есть класс Program и класс Universe, в классе Program я подключаю(#include) Universe.cpp, а в классе Universe...

#ifndef и #include - C++
Допустим, я создал класс #ifndef SOMECLASS_H #define SOMECLASS_H class SomeClass{}; #endif Есть несколько вопросов.

Проблема с #include - C++
Проект состоит из нескольких классов, каждый из которых реализован в своём модуле. Есть Главный класс и Дочерний класс, экземпляр...

проверка #include - C++
насколько я знаю в visual studio есть функция проверки всех #includes на наличие включаемых файлов. где она?

Проблма с #include - C++
Добрый день. Есть два класса, например A и B. Эти классы независимы друг от друга. В заголовочном файле класса А делаю: #include &quot;B.h&quot;....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.08.2012, 21:58     include guard #2
по поводу стражей квлючения на вики вроде коротко и понятно написано. что именно непонятно?
http://ru.wikipedia.org/wiki/Include_guard

по поводу:
Если я просто и в одном и в другом файле прописываю include... Мне выдают ошибку, что эта функция уже имеет текст реализации
Тут похоже реализация функции в h файле. Чтобы не было таких ошибок, функция должна быть инлайновой:
C++
1
2
3
4
5
// some h file
 
inline void SomeFunction()
{
}
добавлю. шаблонные функции инлайновые по умолчанию. методы, реализованные при декларации класса - тоже. в этих случаях такой проблемы нет.
но если реализация метода вынесена за определение класса, то для него тоже нужно инлайн проставлять. иначе такая же проблема будет.
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
21.08.2012, 22:10  [ТС]     include guard #3
Цитата Сообщение от DU Посмотреть сообщение
по поводу стражей квлючения на вики вроде коротко и понятно написано. что именно непонятно?
http://ru.wikipedia.org/wiki/Include_guard

по поводу:

Тут похоже реализация функции в h файле. Чтобы не было таких ошибок, функция должна быть инлайновой:
C++
1
2
3
4
5
// some h file
 
inline void SomeFunction()
{
}
добавлю. шаблонные функции инлайновые по умолчанию. методы, реализованные при декларации класса - тоже. в этих случаях такой проблемы нет.
но если реализация метода вынесена за определение класса, то для него тоже нужно инлайн проставлять. иначе такая же проблема будет.


ВОТ ТУТ ВОЗНИКАЕТ ОШИБКА

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Файл file.h
void fun1() {
 
}
 
 
// Файл one
#include "file.h"
 
void fun2() {
fun1();
}
 
 
// Файл two
#include "file.h"
 
void fun3() {
fun1();
}
DU
1480 / 1056 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
21.08.2012, 22:20     include guard #4
читайте внимательно. я написал про реализации функций в h файле и про то, что они должны быть инлайновыми.
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.08.2012, 23:06     include guard #5
Прототип в .h файл, реализацию в любой .cpp файл, и будет вам счастье.
Yandex
Объявления
21.08.2012, 23:06     include guard
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru