diff options
Diffstat (limited to 'static/netbsd/man7/c.7')
| -rw-r--r-- | static/netbsd/man7/c.7 | 250 |
1 files changed, 250 insertions, 0 deletions
diff --git a/static/netbsd/man7/c.7 b/static/netbsd/man7/c.7 new file mode 100644 index 00000000..70762ddc --- /dev/null +++ b/static/netbsd/man7/c.7 @@ -0,0 +1,250 @@ +.\" $NetBSD: c.7,v 1.15 2023/08/27 15:50:47 rillig Exp $ +.\" +.\" Copyright (C) 2007, 2010 Gabor Kovesdan. All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.\" $FreeBSD: src/share/man/man7/c99.7,v 1.1 2010/06/17 12:05:47 gabor Exp $ +.\" +.Dd March 30, 2011 +.Dt C 7 +.Os +.Sh NAME +.Nm c, c78, c89, c90, c99, c11 +.Nd The C programming language +.Sh DESCRIPTION +C is a general-purpose programming language, which has a strong connection +with the UNIX operating system and its derivatives, since the vast +majority of those systems were written in the C language. +The C language contains some basic ideas from the BCPL language through +the B language written by Ken Thompson in 1970 for the DEC PDP-7 machines. +The development of the UNIX operating system was started on a PDP-7 +machine in assembly language, but this choice made it very difficult +to port the existing code to other systems. +.Pp +In 1972, Dennis M. Ritchie worked out the C programming language for +further development of the UNIX operating system. +The idea was to implement only the C compiler for different +platforms, and implement most parts of the operating system +in the new programming language to simplify the portability between +different architectures. +It follows that C is very well adapted for (but not limited to) writing +operating systems and low-level applications. +.Pp +The C language did not have a specification or standardized version for +a long time. +It went through a lot of changes and improvements for ages. +In 1978, Brian W. Kernighan and Dennis M. Ritchie published the +first book about C under the title +.Dq The C Programming Language . +We can think of this book as the first specification of the language. +This version is often referred to as +.Dq K&R C +after the names of the authors. +Sometimes it is referred to as C78, as well, after the publishing year of +the first edition of the book. +.Pp +It is important to notice that the instruction set of the language is +limited to the most fundamental elements for simplicity. +Handling of the standard I/O and similar common functions are implemented in +the libraries shipped with the compiler. +As these functions are also widely used, it was demanded to include into +the description what requisites the library should conform to, not just +strictly the language itself. +Accordingly, the aforementioned standards cover the library elements, as well. +The elements of this standard library are still not enough for more +complicated tasks. +In this case the provided system calls of the given operating system can be +used. +To not lose the portability by using these system calls, the POSIX +(Portable Operating System Interface (for Unix)) standard evolved. +It describes what functions should be available to keep portability. +Note that POSIX is not a C standard, but an operating system standard +and thus is beyond the scope of this manual. +The standards discussed below are all C standards and only cover +the C programming language and the accompanying library. +.Pp +After the publication of the book mentioned before, +the American National Standards Institute (ANSI) started to work on +standardizing the language, and in 1989 they announced ANSI X3.159-1989. +It is usually referred to as ANSI C or C89. +The main difference in this standard were the function prototypes, +which was a new way of declaring functions. +With the old-style function declarations, the compiler was unable to +check the sanity of the actual parameters of a function call. +The old syntax was highly error-prone because incompatible parameters +were hard to detect in the program code and the problem only showed up +at run-time. +.Pp +In 1990, the International Organization for Standardization (ISO) adopted +the ANSI standard as ISO/IEC 9899:1990. +This is also referred to as ISO C or C90. +It only contains negligible minor modifications against ANSI C, +so the two standards are often considered to be fully equivalent. +This was a very important milestone in the history of the C language, but the +development of the language did not stop. +.Pp +The ISO C standard was later extended with an amendment as +ISO/IEC 9899 AM1 in 1995. +This contained, for example, the wide-character support in +.In wchar.h +and +.In wctype.h . +Two corrigenda were also published: +Technical Corrigendum 1 as ISO/IEC 9899 TCOR1 in 1995, +and Technical Corrigendum 2 as ISO/IEC 9899 TCOR2 in 1996. +The continuous development and growth made it necessary to work out a new +standard, which contains the new features and fixes the known defects and +deficiencies of the language. +As a result, ISO/IEC 9899:1999 was born in 1999. +Similarly to the other standards, this is referred to after the +publication year as C99. +The improvements include the following: +.Bl -bullet -offset indent +.It +Inline functions. +.It +Support for variable length arrays. +.It +New large-range integer type named +.Vt long long int , +and other integer types described in +.Xr stdint 3 +and +.Xr inttypes 3 . +.It +New boolean data type; see +.Xr stdbool 3 . +.It +One-line comments taken from the C++ language. +.It +Some new preprocessor features. +.It +A predefined identifier +.Va __func__ +and a +.Vt restrict +type qualifier. +.It +Declarations are allowed after statements, not just in the beginning of the +program or program blocks. +.It +No implicit +.Vt int +type. +.El +.Pp +In 2011, another revision of ISO/IEC 9899 was published, nicknamed C11, +adding features such as: +.Bl -bullet -offset indent +.It +Compile-time assertions. +.It +Type-generic expressions. +.It +Unnamed struct and union members. +.El +.Pp +In 2017, another revision of ISO/IEC 9899 was published, nicknamed C17, +containing corrections to C11, but no new features. +.Pp +Since then no new standards have been published, but the C language is still +evolving. +.Pp +Most of the UNIX-like operating systems use GNU C as a system compiler, +but the various extensions of GNU C, such as +.Xr attribute 3 +or +.Xr typeof 3 , +should not be considered standard features. +.Sh SEE ALSO +.Xr c89 1 , +.Xr c99 1 , +.Xr c11 1 , +.Xr cc 1 , +.Xr cdefs 3 +.Rs +.%A Brian W. Kernighan +.%A Dennis M. Ritchie +.%B The C Programming Language +.%D 1988 +.%N Second Edition, 40th printing +.%I Prentice Hall +.Re +.Sh STANDARDS +.Rs +.%A ANSI +.%T X3.159-1989 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:1990, Programming languages -- C +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899 AM1 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899 TCOR1, Programming languages -- C, Technical Corrigendum 1 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899 TCOR2, Programming languages -- C, Technical Corrigendum 2 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:1999, Programming languages -- C +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:1999 TCOR1, Programming languages -- C, Technical Corrigendum 1 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:1999 TCOR2, Programming languages -- C, Technical Corrigendum 2 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:1999 TCOR3, Programming languages -- C, Technical Corrigendum 3 +.Re +.Pp +.Rs +.%A ISO/IEC +.%T 9899:2011, Programming languages -- C +.Re +.Sh HISTORY +This manual page first appeared in +.Fx 9.0 +and +.Nx 6.0 . +.Sh AUTHORS +This manual page was written by +.An Gabor Kovesdan Aq Mt gabor@FreeBSD.org . |
