aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/info/chap/introduction.texinfo143
1 files changed, 142 insertions, 1 deletions
diff --git a/doc/info/chap/introduction.texinfo b/doc/info/chap/introduction.texinfo
index e846bda..cb2bfe5 100644
--- a/doc/info/chap/introduction.texinfo
+++ b/doc/info/chap/introduction.texinfo
@@ -4,7 +4,7 @@
@cpindex Hosted environment
@cpindex Unhosted environment
The C programming language does not provide
-an built-in functions or constant values.
+any built-in functions or constant values.
It only, provides a few basic numerical
data types. In fact, it does not even call
the function @code{main}. All of these
@@ -40,3 +40,144 @@ as a more extensive documentation. It is written
with the assumption that you are familiar with
the C programming language.
+
+@menu
+* Reserved Names:: Names you should not use for your functions and variables.
+* Feature-Test Macros:: Specifying features that should be available.
+@end menu
+
+
+
+@node Reserved Names
+@section Reserved Names
+
+The names of all types, variables, functions and
+macros, that comes from the @sc{ISO}@tie{}C standard
+are reserved. Additionally, all names that are
+defined or declared from an explicitly included
+header file is reserved.
+
+It is important for maintainability that reserved
+names are not redefined. But it is also important
+because the C compiler can do special optimisations
+bases on the semantics of the standardised function.
+It may even replace the function calls, with functions
+built into the compiler.
+
+The names that are reserved is not implemented to
+those documented in this manual. Some names are
+reserved for future use, for the C standard library
+to use internally, and for the compiler to define
+to give information about the platform. Names
+starting with at least one underscore (`_') are
+reserved for the two latter. The names that are
+reserved for the C and @sc{POSIX} standards, and the
+operating system, are:
+
+@itemize @bullet{}
+@item
+Names that begin with an uppercase @code{E} and
+a digit or uppercase letter. These are used for
+error-codes names.
+
+@item
+Names that begin with @code{LC_} and an uppercase
+letter are reserved for locale attributes.
+
+@item
+Names that being with @code{SIG} and an uppercase
+letter are reserved for signal names.
+
+@item
+Names that being with @code{SIG_} and an uppercase
+letter are reserved for signal actions.
+
+@item
+Names that begin with @code{is} and a lowercase
+letter are reserved for character type testing.
+
+@item
+Names that begin with @code{mem} and a lowercase
+letter are reserved for functions that operate
+over character arrays.
+
+@item
+Names that begin with @code{str} and a lowercase
+letter are reserved for functions that operate
+over strings.
+
+@item
+Names that begin with @code{to} and a lowercase
+letter are reserved for character type conversion.
+
+@item
+Names that begin with @code{wmem} and a lowercase
+letter are reserved for functions that operate
+over wide-character arrays.
+
+@item
+Names that begin with @code{wcs} and a lowercase
+letter are reserved for functions that operate
+over wide-character strings.
+
+@item
+Names that end with @code{_t} ae reserved for
+type definitions.
+
+@item
+Names of existing mathematics functions, suffixed
+with @code{f} or @code{l} are reserved for
+@code{float}- and @code{long double}-variants
+of corresponding functions.
+
+@item
+Names that begin with @code{d_} are reserved
+for @file{<dirent.h>}.
+
+@item
+Names that begin with @code{F_}, @code{O_},
+or @code{l_} are reserved for @file{<fcntl.h>}.
+
+@item
+Names that begin with @code{gr_} are reserved
+for @file{<grp.h>}.
+
+@item
+Names that end with @code{_MAX} are reserved
+for @file{<limits.h>}.
+
+@item
+Names that begin with @code{pw_} are reserved
+for @file{<pwd.h>}.
+
+@item
+Names that begin with @code{sa_} or @code{SA_}
+are reserved for @file{<signal.h>}.
+
+@item
+Names that begin with @code{S_} or @code{st_}
+are reserved for @file{<sys/stat.h>}.
+
+@item
+Names that begin with @code{tms_} are reserved
+for @file{<sys/times.h>}.
+
+@item
+Names that begin with @code{B} and a digit,
+@code{I}, @code{O}, @code{TB}, @code{V}, or
+@code{c_} are reserved for @file{<termios.h>}.
+@end itemize
+
+It is possible for libraries to avoid restrictions
+by prefixing all names with the name of the library
+(starting with @code{lib}.) Names that are reserved
+for specific header files do not need to considered
+unless the header file is included.
+
+
+
+@node Feature-Test Macros
+@section Feature-Test Macros
+
+LOREM IPSUM
+