Значение расположения ключевого слова константы в переменные декларации

Каково значение расположения

const

ключевое слово, объявляя переменную в Цели-C, например:

extern const NSString * MY_CONSTANT;

против

extern NSString * const MY_CONSTANT;

Используя первую версию в назначениях производит предупреждения об «определителях от целевого типа указателя», отказанного, таким образом, я предполагаю, что вторая версия гарантирует, что адрес указателя остается тем же. Я был бы очень признателен за более категорический ответ все же.Заранее большое спасибо!

13
задан Andy Bowskill 17 January 2010 в 21:45
поделиться

2 ответа

В первом случае вы объявляете смешной указатель на неизменном Const NSString Const NSString , в то время как во втором случае вы объявляете неизменный указатель на смену NSSTRING Отказ

Простой способ запоминать это, чтобы посмотреть, где находится * ; Все слева от него - тип «Postee», и все справа от него описывает свойства указателя.

14
ответ дан 1 December 2019 в 21:24
поделиться

Профилирующий код или блокировка данных можно сделать через файлы карты: для GCC см. здесь , для VS см. здесь .
Я еще не видел полезный инструмент для профилирования размеров, хотя (и у вас нет времени, чтобы исправить мой взгляд против Addin).

-121--1158383-

В целом const всегда относится к токену непосредственно перед const . Во втором случае const означает, что указатель постоянна, не то, что на что указано. Исключением является когда Const появляется до того, как все, что может значительно быть постоянным, как в вашем первом примере. В этом случае это относится к первому типу, в данном случае NsString , поэтому его эквивалент Extern NsString Const * My_Constant

5
ответ дан 1 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: