Чтобы избежать проблем с дублирующимися глобальными определениями, вам нужно изменить объявления ваших const
структур в заголовках на:
extern const RGBColor kRGB_White;
extern const RGBColor kRGB_Black;
И поместите определения в один файл .c, который будет связан.
Альтернативой является изменение структур const
на статические, чтобы не повредить их, если они окажутся в нескольких разных модулях:
static const RGBColor kRGB_White = {1.0f, 1.0f, 1.0f};
static const RGBColor kRGB_Black = {0.0f, 0.0f, 0.0f};
Это может привести к тому, что объекты будут появляться более одного раза в конечном связанном изображении, но сегодняшние компоновщики, вероятно, достаточно умны, чтобы избавиться от дубликатов (я думаю - некоторые тесты могут быть в порядке, если структуры вы делаете это с большим и / или многочисленным).
Если вы беспокоитесь об использовании consts для инициализации других переменных, это:
RGBColor aColor = kRGB_White;
нормально в C (программисты, как правило, думают, что C по какой-то причине не позволяет этого - может быть, это не всегда разрешалось в предстандартном C?).