Некоторый полезный mencoder управляет, чтобы я узнал о при поиске некоторых инструментов редактирования аудио и редактирования видео:
от .xxx до Дампа .avi
mencoder movie.wmv -o movie.avi -ovc lavc -oac lavc
звучат от видео:
mplayer -ao pcm -vo null -vc dummy -dumpaudio -dumpfile fileout.mp3 filein.avi
Все согласились, что @interface, @implementation и т. Д. Являются директивами препроцессора, а не ключевыми словами
Тогда все ошибались. #import
и #pragma
- это директивы препроцессора.
@interface, @implementation, @protocol
и т. Д. Являются ключевыми словами Objective-C, и это директивы компилятора . Они не были директивами препроцессора с тех пор, как NeXT расширил GCC для компиляции Objective-C без оригинальной реализации препроцессора Stepstone Objective-C.
Re: Николай Рухе предполагает, что self - это ключевое слово
self
является параметром метода Objective-C типа id
(аналогично тому, как _cmd
также является параметром типа SEL
), а не ключевым словом. nil
- это макрос, который расширяется до NULL
. Я немного разочарован тем, что super
не расширяется до макроса и не является параметром.
Из статьи в википедии:
Objective-C - это тонкий слой поверх C , и, более того, является строгим надмножеством C. Можно скомпилировать любую программу C с помощью компилятора Objective-C и свободно включать код C в класс Objective-C.
Это помешало бы Objective-C добавлять в язык какие-либо запрещенные ключевые слова.
Взгляд на Язык программирования Objective-C дает вам некоторые подсказки о том, что возможно, а что нет. Поскольку некоторые «ключевые слова» определены в файле заголовка, их замена может привести к наблюдаемому (и неожиданному) поведению.
Википедия определяет ключевые слова как:
В компьютерном программировании ключевое слово - это слово или идентификатор, которые имеют особое значение для языка программирования.
Я бы перевел это to: ключевое слово в языке не является терминальным по своей грамматике. (Между прочим, грамматика не содержит слово «ключевое слово» само по себе, так что здесь нет путаницы.)
Терминалы в грамматике будут такими:
Вы можете проверить Язык программирования Objective-C .
Насколько я могу судить, в этом документе ничего не классифицируется как «зарезервированное слово» . @implementation
, @interface
и т. Д. Называются «директивами компилятора».
Грамматика в Приложении B к оригинальной книге 1995 года определяет super
как терминал «буквального символа», и это особый случай в синтаксисе получателя сообщения .
в
буквальный символ является частью квалификатора протокола в ObjC 1.0 и повторно использовался в синтаксисе быстрого перечисления в ObjC 2.0 (который не имеет формального определения грамматики AFAIK).
id
определен как часть спецификатора типа рядом с void
, char
, unsigned
, типизированными типами и т. Д. .Если вы вызываете ключевое слово void
, то id
тоже.