standards: Using Extensions

1 
1 3.3 Using Non-standard Features
1 ===============================
1 
1 Many GNU facilities that already exist support a number of convenient
1 extensions over the comparable Unix facilities.  Whether to use these
1 extensions in implementing your program is a difficult question.
1 
1    On the one hand, using the extensions can make a cleaner program.  On
1 the other hand, people will not be able to build the program unless the
1 other GNU tools are available.  This might cause the program to work on
1 fewer kinds of machines.
1 
1    With some extensions, it might be easy to provide both alternatives.
1 For example, you can define functions with a "keyword" 'INLINE' and
1 define that as a macro to expand into either 'inline' or nothing,
1 depending on the compiler.
1 
1    In general, perhaps it is best not to use the extensions if you can
1 straightforwardly do without them, but to use the extensions if they are
1 a big improvement.
1 
1    An exception to this rule are the large, established programs (such
1 as Emacs) which run on a great variety of systems.  Using GNU extensions
1 in such programs would make many users unhappy, so we don't do that.
1 
1    Another exception is for programs that are used as part of
1 compilation: anything that must be compiled with other compilers in
1 order to bootstrap the GNU compilation facilities.  If these require the
1 GNU compiler, then no one can compile them without having them installed
1 already.  That would be extremely troublesome in certain cases.
1