Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445

Использование переменной одного хидера в других

26.02.2011, 20:51. Показов 1348. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
доброе утро, день, вечер.
у меня вопрос следующий. имеется 3 хидера. Form1.h, analyse.h, tabs.h. последние 2 включены в первый.
имеется динамически созданная переменная класса который я сам описывал, она объявлена в Form1.h. как сделать что бы переменную можно было использовать в 2 остальных хидерах?
З.Ы. структура объявлена analyse.h, переменная в Form1.h создается без ошибок. платформа vs2010. winforms, т.е. c++ .net

Добавлено через 1 час 39 минут
хм. затолкал структуру и объявление переменной в stdafx.h.
получилось:
C++
1
2
3
4
5
6
7
8
#pragma once
...
struct listsp
    {
        spisok *first,*past;
    };
...
listsp *ListTerminals;
теперь линкер ругается, как я понял на то, что много раз объявляется переменная


1>stdafx.obj : error LNK2005: "struct listsp * ListTerminals" (?ListTerminals@@$$Q3PAUlistsp@@A) уже определен в my bnf.obj
1>E:\проекты c++\my bnf\Debug\my bnf.exe : fatal error LNK1169: обнаружен многократно определенный символ - один или более

есть соображения?

Добавлено через 1 час 32 минуты
линкер перестает ругаться если убрать из кода обращение переменной, но тогда нафига она вообще нужна?

Добавлено через 39 секунд
тут есть хоть 1 живой кто ответить может?)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2011, 20:51
Ответы с готовыми решениями:

Проект не видит хидера
Есть проект, в нем есть файл *.h и два *.cpp файла, в которых он используется. В обоих он подключен инклудом. При попытке откомпилировать...

Использование setlocale для других языков
Подключаю #include <locale.h> и setlocale(LC_ALL, "Russian") прекрасно работает с русским языком. Но когда вместо пытаюсь подключить...

AVX инструкции с использованием хидера imminitrin.h
Добрый день! Есть простенький код, который проверят 28 бит регистра RCX (ECX не использую, т.к. сборка 64 битная, а в 32 битной можно не...

6
2 / 2 / 1
Регистрация: 23.02.2011
Сообщений: 13
26.02.2011, 20:58
Попробуйте создать отдельный заголовочный файл, скажем,
C++
1
mystr.h
,
а во всех остальных указать
C++
1
#include "mystr.h"
.
Объявите нужные Вам переменные только в этом отдельном файле, после чего будет даже подсказка высвечиваться при обращении к структуре.
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
26.02.2011, 21:00  [ТС]
Цитата Сообщение от АХ Посмотреть сообщение
C++
1
#include "mystr.h"
.
Объявите нужные Вам переменные только в этом отдельном файле, после чего будет даже подсказка высвечиваться при обращении к структуре.
mystr.h в моем случае stdafx.h
его листинг:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#pragma once
struct spisok 
    {
        char ch;
        spisok *next;
    };
struct listsp
    {
        spisok *first,*past;
    };
struct stack 
    {
        char ch;
        stack *prew;
    };
 listsp *ListTerminals;
ничего лишнего
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
26.02.2011, 22:55
extern
используется для видимости переменной из других блоков
используется обычно так
tst.h
C++
1
extern int value1
tst.c
C++
1
int value1
потом подключаешь во все файлы tst.h где идет обрашение к переменной
С уважением Валерий
1
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
26.02.2011, 23:09  [ТС]
ValeryS, спасибо, заработало. я этот extern как только не крутил)а вот в cpp хидера объявлять не додумывался)))
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
26.02.2011, 23:18
ну ты можешь не прикручивать хидер
а просто во всех файлах объявить
extern int value1
но если у тебя больше десятка файлов (а потом еще допишешь)
и забудешь где нибудь extern то произойдет перекрытие переменной
эту вещь я тоже почерпнул на форумах( не в одной книге не видел )
передай другому
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
26.02.2011, 23:20  [ТС]
ValeryS, обязательно передам. я пока ни в 1 книге ничего полезного не нашел, только гугл и форумыраспространяем и получаем знания
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.02.2011, 23:20
Помогаю со студенческими работами здесь

Использование переменной с других файлов
Привет всем! А как сделать так, чтобы переменную определенную в одном .cpp файле можно было бы использовать в остальных...

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

Использование переменной из одного метода в другой
Здравствуйте! Я начал писать программу для изучения методов. Я столкнулся с такой проблемой: в другом методе пишет, что переменная 'z'...

Использование имени метода/переменной, указанного в переменной String
public class Oll { String FishR = {"R","U","Rb","U","R","U","U","Rb"}; String FishL = {"Lb","Ub","L","Ub","Lb","U","U","L"}; ...

Позиционирование хидера
Приветствую! Сложилась следующая проблема - никак не могу разобраться, хотел бы спросить совета. Переделываю дефолтный шаблон в instantcms...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru