Harasees_Singh Ответов: 2

В том числе один и тот же заголовочный файл в разных файлах - C++


Я работаю в проекте MFC, и у меня есть заголовок и cpp-файл моей библиотеки, я включаю заголовочный файл в разные файлы. у меня есть глобальная инициализация массива символов в заголовочном файле, потому что все файлы нуждаются в ней. Но когда я компилирую его, понятно, что он говорит мне, что я инициализировал массив символов дважды.

Что я уже пробовал:

Я однажды попробовал использовать pragma и определяющий трюк, используемый в заголовочных файлах

#ifndef MY_HEADER_FILE
#define MY_HEADER_FILE
//Initialization here

#endif


Но компоновщик все равно выдает ошибку, как же нам решить эту проблему?

2 Ответов

Рейтинг:
0

Richard MacCutchan

Не помещайте инициализацию в заголовок, поместите ее в реализацию (например, файл .cpp). И используя #ifndef или #pragma операторы просто предотвращают включение заголовочного файла более одного раза в каждую единицу компиляции (опять же файл .cpp). Это не делает его уникальным во всем проекте. Вышеизложенное является чем-то вроде догадки, так как вы не показали ни одного соответствующего кода.


Harasees_Singh

Спасибо за ответ, нашел решение

Рейтинг:
0

KarstenK

Моя рекомендация-это использование современного языка. #ПРАГМА один раз директива компилятора вместо макросов, которые также являются распространенным источником странных ошибок.

Последними разработками являются модули но я не использую настоящую Visual Studio и ее набор инструментов.