У меня есть проект с несколькими заголовочными файлами и .cpp
файлами.Все заголовочные файлы содержат защитные элементы.
Существует файл с именем Constants.h
, в котором я определяю некоторые константы.Некоторые из них с определениями, некоторые как постоянные переменные.
Есть больше пар заголовка- .cpp
-файла с кодом в них.Один из них содержит класс, а другие нет.
Когда я включаю свои файлы в свой основной файл (набросок arduino), я получаю много ошибок компоновщика, утверждая, что существует несколько определений некоторыхпеременные.
Я читал, что это в основном происходит, когда вы включаете файлы .c
или .cpp
, чего я не делаю.Все файлы .cpp
содержат только соответствующие им заголовочные файлы.
Мне удалось найти несколько предложений по решению:
1) inline
:
С функциями, inline
может использоваться, чтобы избавиться от этой проблемы.Однако это невозможно с переменными.
2) анонимный namespace
:
Это одно из решений, которое я использовал.Я поместил анонимные пространства имен вокруг всех проблемных определений, которые у меня были.Это сработало, однако я не понимаю, почему это работает.Может ли кто-нибудь помочь мне понять это?
3) перемещение определений в .cpp
файлы:
Это другой подход, который я иногда использовал, но это не всегда было возможнотак как мне нужны были некоторые из моих определений в другом коде, не принадлежащем этому заголовочному файлу или его коду (который я признаю, это плохой дизайн).
Может ли кто-нибудь объяснить мне, где именно проблема и почему эти подходыработа