|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
||||||||||||||||
Глобальный HINSTANCE для всего проекта17.10.2014, 00:24. Показов 2203. Ответов 12
Метки нет (Все метки)
Здравствуйте. Помогите решить проблему
Думаю, по ходу решения всплывет мое непонимание какого-то аспекта структуры программы, по этому поводу тоже прошу меня просвятить.Итак, сейчас все работает. Проект состоит из нескольких файлов с исходниками и одного хидера (main.h), содержащего описания классов, прототипы функций, нужные подключаемые библиотеки итд. Файл с функцией main (main.cpp) сильно перегружен: там находятся обработчики сообщений для всех диалоговых окон, конструкторы некоторых интерфейсных классов и прочий мусор. Задача - разделить все это для удобства по нескольким файлам. Сейчас, в самом начале main.cpp, у меня красуется
Сейчас main.h выглядит так:
Так вот, если просто целиком скопировать
Если запихнуть объявление HINSTANCE hInst в main.h, а в main.cpp на том же месте написать hInst = 0, ошибки вылетают следующие: error C4430: missing type specifier - int assumed. Note: C++ does not support default-int И error C2040: 'hInst' : 'int' differs in levels of indirection from 'HINSTANCE'. Научите, в чем проблема, пожалуйста
0
|
||||||||||||||||
| 17.10.2014, 00:24 | |
|
Ответы с готовыми решениями:
12
Как использовать глобальный список, который будет виден для всех классов проекта? Константы для всего проекта Переменные для всего проекта |
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||||||||||||||||||||
| 17.10.2014, 00:37 | ||||||||||||||||||||||
Сообщение было отмечено yeng как решение
Решение
во все файлы,кроме одного напиши так
Добавлено через 3 минуты можно написать в main.h
1
|
||||||||||||||||||||||
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
|
| 17.10.2014, 00:41 [ТС] | |
|
ValeryS, спасибо, завтра попробую. А вообще структура программы, как у меня, является рациональной? Один толстый хидер с описанием классов и прототипами, подключаемый к каждому из исходников, содержащих тела классов и тела функций? Или у людей по-другому это делается?
![]() Добавлено через 2 минуты И прошу прощения, что сперва написал, а потом подумал. Сейчас представил себе, как здесь будет работать ifndef-define, и понял, что мой вариант с HINSTANCE hInst = 0 внутри хидера был в корне неправильным Это к предложенному варианту, а вопрос выше все еще актуален.
0
|
|
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||
| 17.10.2014, 00:44 | ||
|
типа каждому классу свой заголовочный файл а в main.h можешь подключить нужные
0
|
||
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
|
| 17.10.2014, 00:57 [ТС] | |
|
ValeryS, то есть чтобы что-то подобное получилось?
Не по теме: Прямо в пост картинку вставить не получилось, есть вообще такая возможность? А тогда еще один вопрос. В каждый из этих отдельных хидеров могут подключаться необходимые для их работы стандартные хидеры. То есть, например, math.h подключен и в cl1.h, и в cl2.h, а в main.h подключаются и cl1.h, и cl2.h, то есть получится, что math.h подключается 2 раза. На это, вроде бы, компилятор ругаться будет. Как с этим быть?
0
|
|
|
3073 / 1411 / 425
Регистрация: 19.01.2009
Сообщений: 3,894
|
||||||||
| 17.10.2014, 01:14 | ||||||||
0
|
||||||||
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
||||||||||||
| 17.10.2014, 01:21 [ТС] | ||||||||||||
|
Вот пример: h1.h:
Как я понял, директивы ifndef-define работают для того, чтобы один и тот же хидер не подключался несколько раз. Но ведь здесь у нас 2 разных хидера, которые ВНУТРИ себя содержат один и тот же хидер. Не понимаю.
0
|
||||||||||||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|
| 17.10.2014, 01:30 | |
|
во первых в <math.h> уже есть обвязка исключающая двойное включение
а во вторых зачем его пихать в заголовочный файл? не проще в cpp?
0
|
|
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
|||
| 17.10.2014, 10:03 [ТС] | |||
|
0
|
|||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|||
| 17.10.2014, 10:25 | |||
|
для этого и существует первый этап -проектирование программы если неправильно спроектируешь потом сам заплюхаешся если написаны нормально то да открой любой стандартный заголовок и увидишь сколько там директив условной компиляции
0
|
|||
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
||
| 17.10.2014, 10:42 [ТС] | ||
|
Я тут не в глаза долблюсь, я прошу, чтобы мне объяснили, как сделать правильно, или ткнули носом, где почитать.
0
|
||
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
||||||||
| 17.10.2014, 10:53 | ||||||||
![]() может и пропустить,если напишешь так
а он просто вставляет содержимое файла на место include
0
|
||||||||
|
5 / 5 / 4
Регистрация: 31.12.2008
Сообщений: 86
|
||||
| 17.10.2014, 11:05 [ТС] | ||||
|
0
|
||||
| 17.10.2014, 11:05 | |
|
Помогаю со студенческими работами здесь
13
Обработчик ошибок для всего проекта Глобальные переменные для всего проекта Диаграмма классов для всего проекта
Задать стиль текста для всего проекта C# Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
Оттенки серого
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 и. . .
|