|
|
|
Как избавиться от замусоривания cpp файлов дубликатами деклараций функций и переменных?17.11.2014, 08:52. Показов 2628. Ответов 28
Метки нет (Все метки)
Как избавиться от замусоривания cpp файлов дубликатами деклараций функций и переменных?
У меня есть например несколько файлов: opengl.h C++ #ifndef OPENGL_H #define OPENGL_H extern int a; extern void foo(); #endif // OPENGL_H C++ #include "opengl.h" int a; int main() { a = 5; return 0; } C++ #include "opengl.h" int a; void foo() { a = 9; }
0
|
|
| 17.11.2014, 08:52 | |
|
Ответы с готовыми решениями:
28
как избавиться от переменных в разделе данных Как избавиться в браузерной строке от get переменных Есть три файла. файл main.cpp и Source.cpp знают только Header.h, так как он подключен. как же подключается Source.cpp |
| 17.11.2014, 11:13 | |
|
0
|
|
|
|
|||
| 17.11.2014, 11:36 [ТС] | |||
Добавлено через 8 минут
0
|
|||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|||||||||||
| 17.11.2014, 11:48 | |||||||||||
|
Пример в шапке темы абсолютно рабочий после выкидывания объявления "int a" в main.cpp. TheCalligrapher всё верно расписал.
Возможно, проблема с неполным пониманием сути работы препроцессорной директивы include. Мысленно подставьте её содержимое во все места, где подключаете заголовочный файл и вот, что получится: opengl.cpp
1
|
|||||||||||
|
|
|
| 17.11.2014, 18:24 [ТС] | |
|
Сейчас на простом примере работает, причем что удивительно - не имеет значения, где находится int a...
opengl.h C++ #ifndef OPENGL_H #define OPENGL_H extern int a; extern void foo(int va); extern void yet(int va); #endif // OPENGL_H C++ #include <stdio.h> #include "opengl.h" int main() { a = 5; printf("%d\n", a); foo(9); printf("%d\n", a); yet(7); printf("%d\n", a); return 0; } int a = 3; // вот, int a; здесь!!! C++ #include "opengl.h" void foo(int va) { a = va; } C++ #include "opengl.h" void yet(int va) { a = va; }
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 17.11.2014, 18:40 | |
|
1
|
|
|
|
|
| 17.11.2014, 19:13 [ТС] | |
|
Переделываю свой проект под раздельную компиляцию и мне попалась структура, которую нельзя написать вместе со словом extern. Отсюда вопрос:
global.h C++ // extern struct vertex не прокатит struct vertex { float px, py, pz, nx, ny, nz, tu, tv; vertex() {} vertex(float _px, float _py, float _pz, float _nx, float _ny, float _nz, float _tu, float _tv) : px(_px), py(_py), pz(_pz), nx(_nx), ny(_ny), nz(_nz), tu(_tu), tv(_tv) {} }; C++ // работает и без этого, если я оставлю здесь это // для удобства, не приведет ли это к каким-нибудь багам? struct vertex;
0
|
|
|
|
|
| 17.11.2014, 19:17 | |
|
programina, а где тут вообще глобальная переменная? Ты уже объявления структур с объявлением переменных путаешь?
1
|
|
|
|
||
| 17.11.2014, 19:26 [ТС] | ||
|
Добавлено через 2 минуты А, дошло кажется. vertex - это имя типа... ![]() Добавлено через 4 минуты Наверно будет лучше, если все структуры, typedef'ы и define'ы убрать куда-нибудь в отдельный файл, чтобы не создавали путаницу.
0
|
||
|
Форумчанин
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
||
| 17.11.2014, 19:36 | ||
|
1
|
||
| 17.11.2014, 19:36 | |
|
Подключение файлов main.cpp some.cpp some.h Графический интерфейс НЕ GUI! как избавиться от глобальных переменных?
Как перенести программу с С++ на С и избавиться от стандартных функций? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него.
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952
Инструкция внутри.
Сразу отвечу: А в PvP с ним. . .
|
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности.
Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
|
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version
Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
|
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер
На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
|
|
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/
TL DR
Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|