typedef в отдельном заголовочном файле

У меня есть файл define.h со следующим кодом

    typedef enum AnswerType : NSUInteger {
    kAnswerTypeNotResponded = 0,
    kAnswerTypeYes = 1,
    kAnswerTypeNo = 2,
    kAnswerTypeComplain = 3
} AnswerType;

Когда я импортирую этот файл в несколько других файлов - я получаю ошибку

ld: 13 duplicate symbols for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Мне нужно, чтобы тип ответа был виден во многих местах. Каков наилучший вариант для его реализации?

2 ответа

Решение

Ваше перечисление выглядит хорошо. Однако, я думаю, должна быть другая проблема.

Одной из основных причин возникновения этой проблемы является то, что файл может быть указан на этапах сборки более одного раза. Поэтому вам нужно убедиться, что файлы перечислены на этапах сборки только один раз.

Вот шаги, которые вы можете выполнить:

  1. Проверьте фазы сборки в настройках цели.
  2. Проверьте, существует ли какой-либо файл дважды.
  3. Если файл существует дважды, удалите один. Если нет, удалите файл внизу, который является самым последним.
  4. Построй снова.

Оригинальный источник ответа

Просто следуйте инструкциям ниже, и ваша проблема решена.

1. Перейти к настройке сборки

2. Поиск нет общих блоков и

3. Установите его НЕТ

4. Построить снова

5. Вы не получите эту ошибку снова.

Другие вопросы по тегам