Ответ 1
Что означают статические, внешние и встроенные (и их комбинации) в Objetive-C с использованием компилятора LLVM?
То же, что и в C, если вы не компилируете как ObjС++ - тогда они означают то же, что и в С++.
Итак, вот введение для C, но прочитайте ссылки, если вы готовы их использовать, потому что важны детали:
Экстерн
Сводка: указывает, что идентификатор определен в другом месте.
Подробности: http://tigcc.ticalc.org/doc/keywords.html#extern
Static
Сводка (значение): Сохраняет значение переменной, чтобы выжить после завершения ее области.
Сводка (функция): Эффективно испускает неназванные копии - полезно для частных функций в C и может использоваться для устранения нескольких ошибок определения при использовании с встроенными функциями.
Подробности: http://tigcc.ticalc.org/doc/keywords.html#static
Инлайн
Сводка: предполагает, что тело функции должно быть перемещено в вызывающих абонентов.
Подробности: http://tigcc.ticalc.org/doc/gnuexts.html#SEC93
Обратите внимание, что inline и static довольно сложны в С++ (например, почти все на С++).
Я также обнаружил, что есть макросы CG_EXTERN и CG_INLINE. Должны ли мы использовать их вместо этого?
Нет.
Вместо этого вы должны указать свой собственный, с собственными значениями, если вам нужен этот тип функциональности. CG_EXTERN
и CG_INLINE
имеют определенные значения (которые могут меняться) и предназначены для использования в определенном контексте - также вы не хотите включать в себя целый ряд фреймворков (все CoreGraphics/ApplicationServices/CoreFoundation/etc.), Когда вы хотите указать что-то, это extern
таким образом, который работает в C и С++.