Hosted and Free-Standing Environments
The dependency on the use of libraries to extend the language has an
important effect on the practical use of C. Not only are the Standard
I/O Library functions important to applications programmers, but there are
a number of other functions that are widely taken almost for granted as
being part of the language. String handling, sorting and comparison,
character manipulation and similar services are invariably expected in all
but the most specialized of applications areas.
Because of this unusually heavy dependency on libraries to do real work,
it was most important that the Standard provided comprehensive definitions
for the supporting functions too. The situation with the library functions
was much more complicated than the relatively simple job of providing a
tight definition for the language itself, because the library can be
extended or modified by a knowledgeable user and was only partially defined
in K&R. In practice, this led to numerous similar but different
implementations of supporting libraries in common use. By far the hardest
part of the work of the Committee was to reach a good definition of the
library support that should be provided. In terms of benefit to the final
user of C, it is this work that will prove to be by far and away the
most valuable part of the Standard.
However, not all C programs are used for the same type of applications.
The Standard Library is useful for ‘data processing’ types of
applications, where file I/O and numeric and string oriented data are
widely used. There is an equally important application area for C—the
‘embedded system’ area—which includes such things as process
control, real-time and similar applications.
The Standard knows this and provides for it. A large part of the Standard
is the definition of the library functions that must be supplied for
hosted environments. A hosted environment is one that provides
the standard libraries. The standard permits both hosted and
freestanding environments. and goes to some length to
differentiate between them. Who would want to go without libraries? Well,
anybody writing ‘stand alone’ programs. Operating systems, embedded
systems like machine controllers and firmware for instrumentation are all
examples of the case where a hosted environment might be inappropriate.
Programs written for a hosted environment have to be aware of the fact that
the names of all the library functions are reserved for use by the
implementation. There is no such restriction on the programmer working in a
freestanding environment, although it isn't a good idea to go using names
that are used in the standard library, simply because it will mislead
readers of the program. Chapter 9 describes the names and uses
of the library functions.
|
Printer-friendly version
The C Book
This book is published as a matter of historical interest.
Please read the
copyright and disclaimer information.
GBdirect Ltd provides up-to-date training and consultancy in
C,
Embedded C,
C++
and a wide range of
other subjects based on
open standards if you happen to be interested.
|