Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
maks1710
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
1

Вынос глобальных переменных в отдельный файл

12.10.2015, 23:58. Просмотров 839. Ответов 8
Метки нет (Все метки)

Всем привет! Вопрос такой - сижу разбираюсь с вынесением функций в отдельные файлы.
Что удалось выяснить - подключая через #include файл *.h при компиляции мы фактически переносим код из файла *.h - в общий машинный код программы. ? Если так - то в этом файле можно прописать 1)все #include <iostream> и т д библиотеки 2) всякие константы и т д. 3) определение пространства имен
Есть ли смысл выносить все это в файл *.h??
И еще:
- почему в файле *.cpp приходится определять пространство имен, если оно определено в *.h
- почему не видна переменная b? объявлена как extern и должна быть видна во всем проекте
Код
файл f.h
C++
1
2
3
4
5
6
7
#ifndef funkH
#define funkH
#include <iostream>
using namespace std;
extern int b;
int funk2(int);
#endif
Код
файл f.cpp
C++
1
2
3
4
5
6
7
#include<iostream>
int funk2(int a)
{
    std::cout<<a<<std::endl;
    b = a*a*a;
    return b;
}
Код
MAIN.CPP
C++
1
2
3
4
5
6
7
#include "funk.h"
void main()
{
    cout<<funk2(10);
    cout << b << endl;
    system("pause");
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2015, 23:58
Ответы с готовыми решениями:

Вынос переменных в отдельный модуль
Здравствуйте, у меня появился вопрос... Можно ли технически вынести переменные программы в...

Вынос класса в отдельный файл
Использую MS VS 2013 Ultimate Учусь программировать, решил попробовать написать морской бой....

Определение глобальных переменных
Доброго времени суток! Интересует следующий вопрос - Возможно ли определение глобальных переменных...

Инициализация глобальных переменных
Требуется инициализировать 2 массива и 2 переменные, которые используются в 2-х функциях, с...

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

8
rikimaru2013
C++ 2D
2489 / 1155 / 351
Регистрация: 30.11.2013
Сообщений: 3,736
13.10.2015, 00:10 2
1) да можно подключить всё, что надо везде как правило такие файлы так и называются core.h в них подключение std контейнеров и define ключей.
2) да там можно подключить константы - но я против глобальных констант без класса - уж такой я
3) нет не стоит писать там namespace - толку от разделения на namespac'ы если вы пихаете подключение вовсе фалйы
4) в cpp файле может быть реализованы классы 100500 разных пространств имён по факту. Поэтому стоит указывать явно какого namespace класса мы пишим реализацию.
5) как я уже говорил чистый СИшная переменная - не для меня. Отлавить её хвост крайне сложно
0
maks1710
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
13.10.2015, 00:24  [ТС] 3
ага, уже разобрался с std - в файле с реализацией функции тоже нужно включать *.h с определением пространства. вроде бы так?

Добавлено через 7 минут
я тоже много слышал про глобальные переменные, но сейчас интересует просто понимание и механика - почему при объявлении extern переменную не видно в проекте?

Добавлено через 4 минуты
namespacы убрал, спасибо
0
Mesteriis
383 / 165 / 52
Регистрация: 08.08.2015
Сообщений: 1,170
Завершенные тесты: 1
13.10.2015, 01:58 4
maks1710, ну потому что ты не подключил ее в майн
0
maks1710
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
13.10.2015, 06:53  [ТС] 5
Mesteriis, , а как это сделать?
0
UnknownSoldier
594 / 113 / 49
Регистрация: 08.04.2015
Сообщений: 264
13.10.2015, 07:03 6
Переменная b объявлена, но нигде не определена. Ошибка будет на этапе компоновки.

"Внешняя" != "глобальная".
0
Mesteriis
383 / 165 / 52
Регистрация: 08.08.2015
Сообщений: 1,170
Завершенные тесты: 1
13.10.2015, 15:44 7
maks1710, командной #include и имя файла где объявляешь
0
maks1710
0 / 0 / 0
Регистрация: 23.08.2015
Сообщений: 19
13.10.2015, 15:54  [ТС] 8
т.е. в main прописать #include "f.h"
тогда переменная b будет видна во всем проекте?
0
Mesteriis
383 / 165 / 52
Регистрация: 08.08.2015
Сообщений: 1,170
Завершенные тесты: 1
13.10.2015, 15:56 9
maks1710, ага
0
13.10.2015, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2015, 15:56

поиск глобальных переменных с++
Есть задачка, которую не могу решить. Дано 9000 .cpp файлов, которые являют собой полноценные...

Объявление глобальных переменных
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; void main (int x, int y) {...

Использование глобальных переменных - моветон ли?
Ребят, очень часто вижу как отцы С++, когда проверяют чей-то код и обнаруживают там глобальные...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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