Объявлять и инициализировать константу в файле заголовка
Я хорошо разбираюсь в типичной парадигме:
//.h
extern const int myInt;
//.c, .m, .cpp, what have you
const int myInt = 55;
Но должен быть способ поместить это в файлы .h
для использования с библиотеками или другими экземплярами, где вы не можете получить доступ к файлу реализации.
Например, я пытаюсь добавить константу NSString
в файл .h
в проекте Xcode следующим образом:
static NSString *const myString = @"my_string";
однако, когда я пытаюсь использовать myString
, я получаю ошибку
Элемент инициализатора не является константой времени компиляции
on myString
, указывая на то, что он не создается должным образом. Как объявить константы времени компиляции в заголовочном файле С++ или Objecitve-C?
Ответы
Ответ 1
В С++ объекты const
имеют внутреннюю связь, если явно не объявлено extern
, поэтому нет проблем с помещением определения в заголовочный файл, например:
const int myInt = 55;
С этим определением и первым объявлением myInt
может использоваться как целочисленное постоянное выражение, такое как для границ массива и т.п.
Я не могу ответить за Objective C.