typeof() не работает и выдает ошибку при компиляции

Мне нужно работать со старым проектом. И почему-то это не позволяет мне скомпилировать следующую строку:

__weak typeof(self) weakSelf = self;

Хотя __typeof работает. Настройки сборки позволяют эту функцию.

Разрешенный тип настроек сборки

Где мне нужно это проверить?


person Ossir    schedule 10.08.2015    source источник
comment
Диалект GNU99 позволяет это. Я не знаю, что об этом говорят правила C99.   -  person Phillip Mills    schedule 10.08.2015
comment
@PhillipMills Это работает. Интересно, почему стандарт C11 этого не позволяет? Он должен быть самым последним.   -  person Ossir    schedule 10.08.2015
comment
Я не языковой юрист, но я думаю, что это расширение GCC, а не часть стандарта C... возможно.   -  person Phillip Mills    schedule 10.08.2015
comment
@PhillipMills Ну, C99 содержит __typeof(), а typeof() - это просто псевдоним для этого. Мб я в этом совершенно не прав.   -  person Ossir    schedule 10.08.2015
comment
@PhillipMills, пожалуйста, добавьте ответ.   -  person Ossir    schedule 12.08.2015


Ответы (1)


Как правильно заметил @PhillipMills, C99, как и C11, не поддерживает typeof.

Чтобы использовать его без префикса (__typeof), необходимо использовать диалект GNU99. Вот полный список различий: В чем разница между GNU99 и C99 (Clang )?

Кроме того, я обнаружил, что все шаблоны Xcode по умолчанию используют GNU99 диалект C.

person Ossir    schedule 20.08.2015