typedef enum scope в проектах xcode - PullRequest
2 голосов
/ 01 июля 2011

Итак, мое текущее понимание enum состоит в том, что я могу использовать его для создания констант, соответствующих числам. Таким образом,

typedef enum 
{
    number0 = 0,
    number1 = 1,
    .
    .
    .

} Numbers;

позволит мне ссылаться на 0 как число 0 в каждой части кода. Кажется, это работает нормально. Однако у меня возникли проблемы с выяснением, как использовать это в проекте Xcode. Например, я пишу один класс, NumberCounter, и включаю этот код в заголовочный файл. Затем я пишу другой класс, numberCalculator. Если я хочу использовать те же определения во втором классе, должен ли я: а) записывать классы в один и тот же исходный файл, или б) включать приведенный выше код в каждый файл, в котором я хочу использовать числа?

Если я включаю код в один класс и исключаю его во второй, я получаю (при попытке получить функцию, возвращающую что-то типа Numbers) ошибку синтаксического анализа: ожидается ошибка типа, но если я включу код в обоих случаях выдается ошибка «Переопределение перечислителя». В настоящее время мой обходной путь заключается в том, чтобы включить код в каждый файл, а затем использовать препроцессор, чтобы убедиться, что он выполняется только один раз - т.е.:

#ifndef NumberDef
#define NumberDef
typedef enum 
{
    number0 = 0,
    number1 = 1,
    .
    .
    .

} Numbers;
#endif

Это работает, но я чувствую, что должен быть хороший простой способ сделать это. Что мне здесь не хватает?

1 Ответ

5 голосов
/ 01 июля 2011

Включите заголовок, в котором он определен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...