Включение файлов приводит к множественным ошибкам определения глобалов

Я получаю забавную множественную ошибку определения. Структура включения выглядит следующим образом:

MAIN -> VM -> BACKEND

Main включает в себя VM, который включает в себя Backend.

У меня три глобальных char * указатели в бэкенде, и это члены, которые я получаю несколько ошибок определения.

Я получаю несколько определений в vm.cpp, main.cpp а также moc_vm.cpp (Я использую Qt).

Я пытался объявить указатели как внешние в остальных источниках, но это не помогло. Все препроцессорные средства защиты установлены, и я не знаю, почему я получаю сообщение об ошибке, поскольку они явно определены только в одном месте …

Есть идеи?

РЕДАКТИРОВАТЬ: Это странно, я могу включить BACKEND в MAIN, и нет никаких проблем, только когда цепочка MAIN> VM> BACKEND, я получаю ошибки.

1

Решение

Определите их как внешние в заголовочном файле.
Определите их (не как внешние) один раз в одном файле cpp.

Вы должны быть в безопасности.

0

Другие решения

использование extern char *name; а затем в одном из ваших .cpp файлов есть char *name = "Something";,

0

Решается путем изменения указателей на статические, чтобы они не были связаны внешне. Они не доступны ни в каком другом источнике в любом случае. Так что, в конце концов, это была проблема со связью …

0
По вопросам рекламы [email protected]