Glossary
These definitions are of terms
as they are used in this list.
Some of these terms have more formal definitions which are
slightly
different.
Many of these terms are from the ANSI/ISO C Standard;
see ANSI Sec. 1.6 or ISO Sec. 3.
- aggregate
- n.
An array or structure type.
adj.
Refers to such a type.
- actual argument
- See argument.
- alias
- n.
A reference
(usually in the form of a pointer)
to an object which is also known via other references
(i.e. its own name,
or
other pointers).
vt.
To create such a reference.
- ANSI
- n.
The American National Standards Institute.
adj.
Used informally to refer to Standard C;
see question 11.1.
- argument
- n.
A value which is passed
in an argument list
during a function call
or function-like macro invocation.
Often emphasized ``actual argument.''
Compare parameter.
- argv
- n.
The traditional name for the array
(``vector'')
of command-line arguments
which is passed to main()
when a C program is invoked;
see questions
11.12b
and
20.3.
- arithmetic
- adj.
Refers to a
type or
value on which
conventional
arithmetic can be performed.
The arithmetic types in C are
the integral types (q.v.)
and the floating types
(float, double, and long double).
- ASCII
- n.,adj.
The American
Standard Code for Information Interchange,
ANSI X3.4-86.
- assignment context
- n.
An expression
context
which is recognizably the source
of an assignment
or conversion
to a destination
of known type.
The assignment contexts in C
are
initializations,
the right-hand side of assignment expressions,
casts,
return statements,
and
function
arguments
in the presence of a
prototype.
- automatic
- adj.
(Often as ``automatic duration.'')
Refers to an object which has its storage automatically allocated
on entry to
a function
(or a nested block),
and deallocated upon return from the function
(or exit from the block).
In other words,
refers to local, nonstatic variables
(as opposed to global variables,
or static variables whether inside or outside of a function).
Compare static, sense 1.
See question 1.30.
- big-endian
- adj.
Refers to storage of a multi-byte quantity
with the most-significant byte
at the lowest
address.
See also byte order.
- binary
- adj.
1.
Base two.
2.
Refers to I/O done in a byte-for-byte or bit-for-bit way,
without formatting or interpretation,
i.e. a direct copy operation
between internal memory and external storage.
3.
Refers to
a
file which is to be interpreted as a sequence of raw bytes,
in which
any byte values may appear.
Compare text.
See questions
12.38,
12.40,
and
20.5.
4.
Refers to an operator taking two operands.
Compare unary.
- bind
- vt,vi.
Informally, to ``stick to'' or ``stick together'';
usually used to indicate which operand(s) are associated with
which operator,
based on precedence rules.
- bitmask
- n.
A mask, sense 1.
- byte
- n.
A unit of storage suitable for holding one character.
Compare octet.
See question 8.10.
See ANSI Sec. 1.6
or ISO Sec. 3.4.
- byte order
- n.
The characteristic ordering of multi-byte quantities
(usually integral)
in memory,
on disk,
or in a network or other bytewise I/O stream.
The two
common
byte orders
(most-significant-first and least-significant-first)
are often called
big-endian and little-endian
(q.v.).
- canonical mode
- n.
The mode of a terminal driver
in which input is collected a line at a time,
allowing the user to correct mistakes
with the
backspace/delete/rubout or other keys.
See question 19.1.
- .c file
- n.
A source file, sense 2.
(See questions 1.7 and 10.6.)
- cast
- n.
The syntax
( type-name )
where type-name is a type name
such as int or char *
;
used to indicate an explicit conversion of a value
to another type.
vt.
To convert a value using a cast.
- conforming
- adj.
1.
Refers to an implementation
(a compiler or other language processor)
which will accept any strictly conforming (q.v.) program.
2.
Refers to a program which is acceptable to a conforming implementation.
(See ANSI Sec. 1.7 or ISO Sec. 4.)
- cpp
- n.
The traditional name for a standalone program
implementing the features of the C preprocessor.
- decay
- vi.
To undergo an implicit transformation
to
a value
of
slightly reduced type.
Informally,
arrays and functions tend to decay into pointers in C.
See questions 6.3 and 1.34.
- declaration
- n.
1.
In general,
a syntactical element
which describes the name and type
of one or more
variables, functions,
structures, unions, or enumerations.
2.
More specifically,
such a description
which refers to a variable or function
which has its definition elsewhere.
See question 1.7.
- declarator
- n.
The ``second half'' of a C declaration,
consisting of an identifier name
along with optional *, [], or () syntax
indicating
(if present)
that the identifier is
a pointer, array, function, or some combination.
See question 1.21.
- definition
- n.
1.
A declaration
of a variable or function
which allocates and optionally initializes
(in the case of a variable)
or provides the function body
(in the case of a function).
A definition in this sense is the opposite of
declaration, sense 2.
See question 1.7.
2.
A declaration of a structure, union, or enumeration type
which describes the type
(and usually assigns a tag)
without necessarily defining any variables of that type.
3.
A preprocessor #define directive.
- dereference
- vt.
To look up a value referred to.
Usually, the ``value referred to''
is the value pointed to by a pointer,
so to ``dereference a pointer''
simply means to see what it points to
(in C,
either
with the unary * operator
or the ``array subscripting'' operator []).
Occasionally,
may refer to the fetching of the value of any variable.
See also indirect.
- dope vector
- n.
An array
(or pointer-simulated array)
which consists merely of pointers to other arrays
(or other pointer-simulated arrays).
See also ragged array.
See questions 6.16
and 20.2.
- endianness
- n.
byte order
(q.v.).
- external
- n.
A function or variable which is referred to,
but not defined,
by some source file
(or object module).
Often
shows up
in the error message ``undefined external''
printed by a linker
when a definition
cannot be found.
- field
- n.
1.
Loosely,
a
member of a structure or union.
(An unambiguous term is member.)
2.
Specifically, a bitfield
(see question 2.25).
- formal parameter
- n.
See parameter.
- freestanding environment
- A C environment which does not support the C libraries;
one
intended for embedded applications and the like.
Compare hosted environment.
(See ANSI Sec. 1.7 or ISO Sec. 4.)
- FSF
- n.
The Free Software Foundation.
- FTP
- 1.
n.
The internet
File Transfer Protocol.
2.
vt.
To transfer a file by FTP.
- full expression
- The complete expression that forms an expression statement,
or one of the controlling expressions of an if,
switch, while, for, or
do/while statement,
or the expression in an initializer or a return statement.
A full expression is not part of a larger expression.
(See ANSI Sec. 3.6 or ISO Sec. 6.6.)
- function pointer
- n.
A pointer to any function type.
Compare object pointer.
- gcc
- n.
The FSF's GNU C compiler.
- GNU
- n.
The FSF's ``GNU's Not Unix!'' project.
- .h file
- n.
A header file.
- header file
- n.
A file containing declarations and certain definitions,
but not function bodies or global variable definitions,
incorporated into a translation unit during
preprocessing via the #include directive.
Compare source file.
See question 10.6.
- H&S
- The book
C: A Reference Manual,
by Samuel P. Harbison and
Guy L. Steele, Jr.
(see the Bibliography for a complete citation).
- hosted environment
- A C environment which also supports the C libraries.
Compare freestanding environment.
(See ANSI Sec. 1.7 or ISO Sec. 4.)
- idempotent
- adj.
Acting exactly once;
innocuous if re-applied.
In C,
usually refers to header files;
see questions 10.7 and 11.21.
- identifier
- n.
A name,
usually having meaning
in a particular namespace and scope.
See question 1.29.
- implementation
- n.
A compiler or other language translator,
together with its run-time libraries.
Used in constructions such as
``Whether plain char is signed or unsigned
is implementation-defined''
and
``These identifiers are reserved to the implementation.''
- implementation-defined
- adj.
Refers to behavior which is not fully specified by the Standard
but which is required to be defined,
and documented,
by any particular implementation.
Example: whether plain char is signed or unsigned.
See question 11.33.
- #include file
- n.
A header file.
- incomplete type
- n.
A type which is not completely specified,
but which may nevertheless be used in some contexts.
Examples:
dimensionless arrays;
structure or union types with tags but without member information.
(See ANSI Sec. 3.1.2.5 or ISO Sec. 6.1.2.5.)
- in-band
- adj.
Refers to a sentinel value
which is not always
unique within the set of values where it appears.
Compare out-of-band.
Example: CP/M or MS-DOS control-Z end-of-file markers.
See question 12.40.
- indirect
- vi.
To apply a level of indirection.
For example, to ``indirect on a pointer''
means
to chase
where the pointer points to
(as opposed to merely discovering the pointer's value).
See also dereference.
- int
- n.
The integral type,
usually matching a machine's natural word size,
which is most often used
(and in some cases is used by default)
to represent integers in C.
- integer
- n.
An integer of some size
(perhaps short or long),
not necessarily plain int.
- integral
- adj.
Refers to a type which can represent integers.
The integral types in C are:
char,
three sizes of int
(short, plain, and long),
signed and unsigned variants of all of these,
and enumerations.
- ISO
- The International Organization for Standardization
or
Organisation Internationale de Normalisation.
- K&R
- n.
1.
The book
The C Programming Language
(see the Bibliography for a complete citation).
2.
That book's
authors,
Brian Kernighan and Dennis Ritchie.
adj.
Refers to the early version of C described in the first edition
(``K&R1'') of the book.
- lhs
- n.
The left-hand side,
usually of an assignment,
or more generally,
of any binary operator.
- lint
- n.
A program written by Steve Johnson
as
companion to his pcc,
for performing cross-file and other error checking not normally
performed by C compilers.
The name supposedly derives from
the bits of fluff it picks from programs.
vt.
To check a program with lint.
- little-endian
- adj.
Refers to storage of a multi-byte quantity
with the least-significant byte
at the lowest
address.
See also byte order.
- lvalue
- n.
Originally,
an expression
which could appear
on the left-hand sign of an assignment operator,
hence,
something that can perhaps be assigned to.
More precisely,
something that has a location,
as opposed to a transient value.
In the assignment
a = b;
a is an lvalue, and is not fetched, but is written to.
Compare rvalue.
See also question 6.7.
See ANSI Sec. 3.2.2.1 (especially footnote 31)
or ISO Sec. 6.2.2.1.
- mask
- 1.
n.
An integer value
which is intended specifically as a pattern of 1's and 0's
with which to perform bitwise operations
(&, |, etc.).
2.
vt.
To select certain bits using a mask (sense 1) and a bitwise operator.
See question 20.7.
- member
- n.
One of the typed components
of a structure or union.
- namespace
- n.
A context within which names
(identifiers)
may be defined.
There are several namespaces in C;
for example,
an ordinary identifier can have the same name as a structure tag,
without ambiguity.
See question 1.29.
- narrow
- adj.
Refers to a type which is widened under the default argument promotions:
char, short, or float.
See questions 11.3
and 15.2.
- nonreentrant
- adj.
Refers to
a piece of code which makes use of static memory,
or works with data structures which it temporarily leaves in an
inconsistent state,
such that it can not safely be called
while another instance of itself is already active.
(That is, it can not be called from an interrupt handler,
because it might have been the code interrupted.)
- ``notreached''
- interj.
A directive
indicating to lint
or some other program checker
that control flow cannot reach a particular point,
and that certain warnings
(e.g. ``control falls off end of function without return'')
should therefore be suppressed.
See question 11.12b.
- null pointer
- n.
A distinguished pointer value
which is not the address of any object or function.
See question 5.1.
- null pointer constant
- n.
An integral constant expression with value 0
(or such an expression cast to void *),
used to request a null pointer.
See question 5.2.
- O(n)
- adj.
A notation referring to the ``order''
or computational complexity of an algorithm.
O(n) algorithms take time
roughly
proportional to the number of items operated upon.
O(n**2)
algorithms take time proportional to the square of the number of items, etc.
- object
- n.
Any piece of data that can be manipulated by a C program:
a simple variable, an array, a structure, a piece of malloc'ed memory,
etc.
See also object pointer.
- object pointer
- n.
A pointer
to any object or incomplete type.
Compare function pointer.
- octet
- n.
An 8-bit quantity.
Compare byte.
- opaque
- adj.
Refers to a data type which is intended to be abstract:
code using the type is not supposed to know how
the type
is
implemented
(whether it is a simple type or a structure,
and if
a structure,
what fields it contains).
See question 2.4.
- order of evaluation
- n.
The order in which the operations implied by an expression
are actually carried out by the processor.
Compare precedence.
See question 3.4.
- out-of-band
- adj.
Refers to a sentinel
or otherwise exceptional
value which is distinct from all normal values
which can appear in some context
(e.g. in a set of
function return values, etc.).
Compare in-band.
Example: EOF (see question 12.1).
- parameter
- n.
The identifier in a function definition,
function-like macro definition,
or function prototype declaration
which stands for the actual argument which will be passed.
Often emphasized ``formal parameter.''
Compare argument.
In the code
main()
{
f(5);
return 0;
}
f(int i)
{
}
the formal parameter of f is i
and the actual argument is 5.
In the fragment
extern int g(int apple);
int orange = 5;
g(orange);
the formal parameter of g is apple
and the actual argument is orange.
- pass by reference
- n.
An argument passing mechanism in which a function receives
a reference to the actual argument,
such that if it modifies it,
it modifies the value in the caller.
Not available in C
(see question 4.11).
- pass by value
- n.
An argument passing mechanism in which a function receives
a copy of the actual argument,
such that if it modifies it,
it modifies only its own copy
(and does not affect the value in the caller).
Always used in C.
See questions
4.8,
7.21,
and
4.11.
- pcc
- n.
Steve Johnson's Portable C Compiler,
first written for the PDP-11
(as an alternative to Dennis Ritchie's cc)
circa
1978.
pcc was retargeted to the VAX during the Unix 32V and BSD
projects
and saw very wide distribution,
and served as the base for a large number of C compilers.
As much as K&R1, it served as the de facto definition
of C for many years,
until X3J11 began its work.
(Note that the PCC mentioned in question 18.3
is probably no relation.)
- precedence
- n.
The ``strength'' of an operator,
indicating how tightly it binds to its operands during parsing,
especially as compared to other nearby operators.
Along with associativity and explicit parentheses,
precedence determines how an expression is parsed:
which operators are applied to which operands and
which subexpressions are the operands of which operators.
Precedence does not necessarily say anything about
order of evaluation (q.v.);
see question 3.4.
- preprocessor
- n.
The part of a compiler
(traditionally, a separate program; hence the name)
which handles the #include, #define, #ifdef,
and related directives,
and performs substitution of #defined macros
in the rest of the
program source.
- pointer context
- n.
An expression
context
in which it
can be recognized
that a pointer value is required.
The pointer contexts in C are:
(1)
any assignment context (q.v.)
in which the destination
(left-hand side) has pointer type;
(2)
an == or != comparison in which one side has
pointer type;
(3)
the second and third operands of the ?: operator, when one
of them is a pointer;
and
(4)
the operand of a pointer cast,
such as (char *) or (void *).
See question 5.2.
- pun
- vt.
To
contrive to
treat
an object
as if it had
a different type,
usually by using a union
or an expression of the form *(othertype *)&object.
- ragged array
- n.
An array,
usually simulated with pointers,
in which the rows are not necessarily of the same length.
See also dope vector.
See questions 6.16
and 20.2.
- reentrant
- adj.
Refers to code which can safely be called
from interrupts
or in other circumstances
in which it is possible
that another instance of the code is simultaneously active.
Reentrant code has to be very careful of the way it
manipulates data:
the data
must either all be local,
or else protected by semaphores or
the like.
- RFC
- n.
An internet
Request For Comments document,
available by ftp from ds.internic.net and many other sites.
- rhs
- n.
The right-hand side,
usually of an assignment,
or more generally,
of any binary operator.
- rvalue
- n.
Originally,
an
expression
which could appear
on the right-hand sign of an assignment operator.
More generally,
any
value which can participate in an expression or be
assigned to some other variable.
In the assignment
a = b;
b is an rvalue, and has its value fetched.
Compare lvalue.
See ANSI Sec. 3.2.2.1 (especially footnote 31)
or ISO Sec. 6.2.2.1.
(See also questions
3.16 and 4.5.)
- scope
- n.
The region over which a declaration is active.
adj.
``In scope'': Visible.
See question 1.29.
- semantics
- n.
The meaning behind a program:
the interpretation which the compiler
(or other translator)
places on the various source code constructs.
Compare syntax.
- short circuit
- v.
To prematurely terminate the evaluation of an expression
when the outcome is
determined.
The short-circuiting operators in C are &&, ||,
and ?:.
In the case of && and ||,
the second (right-hand) operand is not evaluated if the first one
determines the
outcome
(is zero in the case of &&,
or nonzero in the case of ||).
In the case of ?:, only one of the second and third
operands is evaluated,
depending on the value of the first operand.
See question 3.6.
- side effect
- n.
Something
permanent
which happens
when an expression or subexpression is evaluated,
beyond
simply yielding a value.
Typical side effects are:
modifying a variable,
printing something.
See ANSI Sec. 2.1.2.3 or ISO Sec. 5.1.2.3.
- sign preserving
- adj.
Another name for the unsigned preserving rules, q.v.
- source file
- n.
1.
Any file containing C source.
2.
More specifically,
a file with a name ending in .c,
containing function bodies and global variable definitions
(and perhaps declarations and definitions of other kinds).
Compare header file, translation unit.
See questions 1.7 and 10.6.
- Standard
- (With a capital S:)
n.
The ANSI/ISO C Standard,
ANSI X3.159-1989 or ISO/IEC 9899:1990
(see question 11.1).
adj.
Refers to something which is compatible with that Standard.
- static
- adj.
1.
(Often as ``static duration.'')
Refers to an object which persists throughout the lifetime of a program,
being allocated and initialized just once, at program startup.
Compare automatic.
See question 1.30.
2.
Local to a source file,
i.e. not of global scope.
- strictly conforming
- adj.
Refers to a program
which uses only the features described in the ANSI/ISO C Standard,
and does not depend on any
unspecified, undefined, or implementation-defined behavior.
(See ANSI Sec. 1.7 or ISO Sec. 4.)
- string
- n.
An array of char,
or a malloc'ed region,
containing a sequence of characters terminated with '\0'.
- stringize
- vt.
To convert a source token
into a string literal.
See questions
11.17
and
11.18.
- string literal
- n.
A sequence of characters between double quotes in source code.
Used to initialize an array of char,
or
to request an anonymous array
containing a constant string
(which will generally be accessed by
the pointer which the anonymous array decays to).
See question 1.32.
- syntax
- n.
The text of a program:
the
series
of tokens
in which it is expressed.
Compare semantics.
- tag
- n.
The (optional) name for a particular
structure, union, or enumeration.
See question 2.1.
- token
- n.
1.
The smallest syntactic unit generally seen by a compiler or
other translator:
a keyword, identifier, binary operator
(including multicharacter operators such as += and &&),
etc.
2.
A whitespace-separated word within a string
(see question 13.6).
- translation unit
- n.
The set of source files seen by the compiler and translated as a unit:
generally one .c file (that is, source file, sense 2),
plus all header files mentioned in #include directives.
- terminal driver
- n.
That portion of the system software
responsible for character-based input and output,
usually interactive;
originally from and to a serially-connected terminal,
now more generally any virtual terminal
such as a window or network login session.
See question 19.1.
- text
- adj.
Refers to a file or I/O mode which is intended for handling
human-readable text, specifically, printable characters
arranged into lines.
Compare binary, sense 3.
See question
12.40.
- translator
- n.
A program
(compiler, interpreter, lint, etc.)
which parses and
interprets
semantic meaning in
C syntax.
- unary
- adj.
Refers to an operator taking one operand.
Compare binary,
sense 4.
- undefined
- adj.
Refers to behavior which is not specified by the Standard,
for which an implementation
is not required to do anything reasonable.
Example: the behavior of the expression i = i++.
See questions 3.3
and 11.33.
- unroll
- vt.
To replicate the body of a loop one or more times
(while correspondingly reducing the number of iterations),
to improve efficiency
by reducing loop control overhead
(but at the expense of increased code size).
- unsigned preserving
- adj.
Refers to a set of rules,
common in pre-ANSI implementations,
for promoting
signed and unsigned types
which meet across binary operators,
and for promoting narrow unsigned types in general.
Under the unsigned preserving rules,
promotion
is always to an unsigned type.
Compare value preserving.
See question 3.19.
- unspecified
- adj.
Refers to behavior which is not fully specified by the Standard,
for which each implementation must choose some behavior,
though it need not be documented nor even consistent.
Example:
the order of evaluation of
function arguments and other subexpressions.
See question 11.33.
- value preserving
- adj.
Refers to a set of rules,
mandated by the ANSI C Standard
and also
present in some pre-ANSI implementations,
for promoting
signed and unsigned types
which meet across binary operators,
and for promoting narrow unsigned types in general.
Under the value preserving rules,
promotion is to a signed type
if it is large enough to preserve all values,
otherwise to an unsigned type.
Compare unsigned preserving.
See question 3.19.
- varargs
- adj.
1.
Refers to a function which accepts a variable number of
arguments,
e.g. printf.
(A synonym for variadic.)
2.
Refers to one of the arguments
in the variable-length part of a variable-length argument list.
- variadic
- adj.
Refers to a function which accepts a variable number of
arguments,
e.g. printf.
(A synonym for varargs, sense 1.)
- wrapper
- n.
A function
(or macro)
which is ``wrapped around'' another,
providing a bit of added functionality.
For example, a wrapper around malloc
might check malloc's return value.
- X3.159
- n.
The original ANSI C Standard,
ANSI X3.159-1989.
See question 11.1.
- X3J11
- n.
The committee charged by ANSI with the task of drafting the C Standard.
X3J11 now functions as the US Technical Advisory Group
to the ISO C standardization working group WG14.
See question 11.1.
top
about this FAQ list
about eskimo
search
feedback
copyright
Hosted by