Константы Objective-C / C ++ - PullRequest
       1

Константы Objective-C / C ++

3 голосов
/ 26 августа 2010

РЕДАКТИРОВАТЬ: мой пример мог создать некоторую путаницу. Я изменил приведенный ниже пример, чтобы отразить то, чего я хочу достичь. Надеюсь, что это более понятно.

Я пытаюсь определить константу в моем коде объектива-c. Я использую стандарт #define, чтобы сделать это. Например:

#define bluh "a"

Я бы хотел определить другую константу, подобную этой

#define blah bluh +@"b"

Компилятор выдает ошибку (правильно): «недопустимые операнды в двоичный +». Как я могу заставить это работать? Спасибо за помощь.

Я также попробовал Objective-C следующим образом:

NSString *const A =@"a";
NSString *const B = [NSString stringWithFormat:@"%@%@",A,@"b"];

Но это дает мне еще одну ошибку "Элемент инициализатора не является постоянным" Любая помощь будет оценена.

Приветствия

Ответы [ 2 ]

2 голосов
/ 26 августа 2010

Я не знаю цели C. В C ++ смежные строковые литералы объединяются, поэтому достаточно использовать:

#define blah bluh "b"

Кстати, стандартная практика - использовать верхний регистр для препроцессора, где это возможно, определяет, и ни для каких других целей, минимизировать вероятность неожиданных замен.

1 голос
/ 26 августа 2010

В стандартном c / c ++ вы можете объединять буквенные строки, просто помещая их рядом друг с другом, например, "string one-" "string two" станет "string one-string two" после того, как с ним справится компилятор.

Не уверен, что это будет работать с символом '@', который вы получили в начале, но просто попробуйте сделать:

#define bluh "a"
#define blah bluh @"b"

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

...