Вперед Назад Содержание

12. Использование нестандартных возможностей.

Существует несколько удобных GNU-расширений для соответствующих обычных Unix-возможностей. Использовать или нет эти расширения при реализации Вашей программы - сложный вопрос.

С одной стороны, использование этих расширений может сделать программу более ясной. С другой стороны, люди не смогут построить программу, если другие GNU-инструменты будут недоступны. Это может привести к тому, что программа будет работать только на некоторых типах машин.

Для некоторых расширений, без особых трудностей могут быть использованы оба варианта. Например, Вы можете определить функцию с "ключевым словом" INLINE, и определить его как макрорасширение, для того, чтобы оно было расшито как inline или как ничего, в зависимости от используемого компилятора.

Вообще говоря, лучше не использовать расширения, если Вы можете без трудностей обойтись без них, и, напротив, следует использовать расширения, если они дают большие преимущества.

Исключение из этого правила - большие, фундаментальные программы (такие, как GNU Emacs), которые работают на самых различных системах. Такие программы будут существенно испорчены использованием GNU-расширений.

Другое исключение - это программы, которые используются как часть компилятора: все, что должно быть компилировано с помощью других компиляторов для того, чтобы "раскрутить" GNU-компиляторы. Если в этом случае требовать GNU-компилятор, то никто не сможет скомпилировать его, не имея его уже установленным. Это не есть хорошо.

Поскольку большинство компьютерных систем не реализуют ANSI C, использование возможностей ANSI C аналогично использованию GNU-расширений: должны быть применены такие же соглашения. (Исключение составляют те ANSI-возможности, которые мы не поддерживаем, такие как trigraphs - не надо использовать их).


Вперед Назад Содержание