Название: static const struct {} const Отправлено: kambala от Апрель 19, 2012, 19:22 Здравствуйте. Наткнулся в одном проекте (эппловский пример PortMapper) на интересную переменную:
Код До этого в подобной форме (const после типа) видел только указатели (const char *const s) - с ними все понятно. А что означает const после типа для не-указателя? Проект вообще написан на Objective-C, но я думаю это сишная конструкция. Название: Re: static const struct {} const Отправлено: Авварон от Апрель 19, 2012, 22:34 Так это и есть указатель - массив же. Константный массив константных структур, думается так.
Название: Re: static const struct {} const Отправлено: Igors от Апрель 19, 2012, 23:03 Ничего особого он не означает, просто const указано дважды, возможно компилятор вякнет варнингом. Массив - это "rvalue", его можно использовать как указатель но нельзя напр ++kPrivateRanges. Поэтому хоть const слева хоть справа - без разницы.
Название: Re: static const struct {} const Отправлено: kambala от Апрель 19, 2012, 23:38 Так это и есть указатель - массив же. и правда, не подумал про этоНичего особого он не означает, просто const указано дважды, возможно компилятор вякнет варнингом. клэнг промолчал, хотя я статический анализ не запускал - может там бы и сказалМассив - это "rvalue", его можно использовать как указатель но нельзя напр ++kPrivateRanges. вот разве что чтоб оградиться от такого и поставили 2 разазаметил интересную вещь: сишный компилятор пропускает двойной конст для любого типа, плюсовой - только для указателей. Код
Код результаты не изменятся если вместо структуры использовать pod-тип исходный пример g++ тоже не пропускает кстати Название: Re: static const struct {} const Отправлено: Igors от Апрель 20, 2012, 09:53 вот разве что чтоб оградиться от такого и поставили 2 раза От чего "такого"? :)Код То есть массив - указатель, адрес, но менять этот адрес нельзя. Поэтому единственное к чему может быть приложено const - к значению, содержимому на что указывает адрес Название: Re: static const struct {} const Отправлено: kambala от Апрель 20, 2012, 13:15 От чего "такого"? :) но нельзя напр ++kPrivateRanges |