C2011-3(7) Miscellaneous Information Manual C2011-3(7)

3 Terms, definitions, and symbolsWG14 N1570, clause 3

For the purposes of this International Standard, the following definitions apply. Other terms are defined where they appear in italic type or on the left side of a syntax rule. Terms explicitly defined in this International Standard are not to be presumed to refer implicitly to similar terms defined elsewhere. Terms not defined in this International Standard are to be interpreted according to ISO/IEC 2382−1. Mathematical symbols not defined in this International Standard are to be interpreted according to ISO 31−11.

〈execution-time action〉 to read or modify the value of an object

Where only one of these two actions is meant, ‘‘read’’ or ‘‘modify’’ is used.

‘‘Modify’’ includes the case where the new value being stored is the same as the previous value.

Expressions that are not evaluated do not access objects.

requirement that objects of a particular type be located on storage boundaries with addresses that are particular multiples of a byte address

actual argument actual parameter (deprecated) expression in the comma-separated list bounded by the parentheses in a function call expression, or a sequence of preprocessing tokens in the comma-separated list bounded by the parentheses in a function-like macro invocation

external appearance or action

unspecified behavior where each implementation documents how the choice is made

An example of implementation-defined behavior is the propagation of the high-order bit when a signed integer is shifted right.

behavior that depends on local conventions of nationality, culture, and language that each implementation documents

An example of locale-specific behavior is whether the islower function returns true for characters other than the 26 lowercase Latin letters.

behavior, upon use of a nonportable or erroneous program construct or of erroneous data, for which this International Standard imposes no requirements

Possible undefined behavior ranges from ignoring the situation completely with unpredictable results, to behaving during translation or program execution in a documented manner characteristic of the environment (with or without the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a diagnostic message).

An example of undefined behavior is the behavior on integer overflow.

use of an unspecified value, or other behavior where this International Standard provides two or more possibilities and imposes no further requirements on which is chosen in any instance

An example of unspecified behavior is the order in which the arguments to a function are evaluated.

unit of data storage in the execution environment large enough to hold an object that may have one of two values

It need not be possible to express the address of each individual bit of an object.

addressable unit of data storage large enough to hold any member of the basic character set of the execution environment

It is possible to express the address of each individual byte of an object uniquely.

A byte is composed of a contiguous sequence of bits, the number of which is implementation-defined. The least significant bit is called the low-order bit; the most significant bit is called the high-order bit.

〈abstract〉 member of a set of elements used for the organization, control, or representation of data

single-byte character 〈C〉 bit representation that fits in a byte

sequence of one or more bytes representing a member of the extended character set of either the source or the execution environment

The extended character set is a superset of the basic character set.

value representable by an object of type wchar_t, capable of representing any character in the current locale

restriction, either syntactic or semantic, by which the exposition of language elements is to be interpreted

representation in the result format that is nearest in value, subject to the current rounding mode, to what the result would be given unlimited range and precision

message belonging to an implementation-defined subset of the implementation’s message output

reference to a later subclause of this International Standard that contains additional information relevant to this subclause

particular set of software, running in a particular translation environment under particular control options, that performs translation of programs for, and supports execution of functions in, a particular execution environment

implementation limit
restriction imposed upon programs by the implementation

either an object of scalar type, or a maximal sequence of adjacent bit-fields all having nonzero width

Two threads of execution can update and access separate memory locations without interfering with each other.

A bit-field and an adjacent non-bit-field member are in separate memory locations. The same applies to two bit-fields, if one is declared inside a nested structure declaration and the other is not, or if the two are separated by a zero-length bit-field declaration, or if they are separated by a non-bit-field member declaration. It is not safe to concurrently update two non-atomic bit-fields in the same structure if all members declared between them are also (non-zero-length) bit-fields, no matter what the sizes of those intervening bit-fields happen to be.

A structure declared as

             struct {
                   char a;
                   int b:5, c:11, :0, d:8;
                   struct { int ee:8; } e;
             }

contains four separate memory locations: The member a, and bit-fields d and e.ee are each separate memory locations, and can be modified concurrently without interfering with each other. The bit-fields b and c together constitute the fourth memory location. The bit-fields b and c cannot be concurrently modified, but b and a, for example, can be.

region of data storage in the execution environment, the contents of which can represent values

When referenced, an object may be interpreted as having a particular type; see 6.3.2.1.

formal parameter formal argument (deprecated) object declared as part of a function declaration or definition that acquires a value on entry to the function, or an identifier from the comma-separated list bounded by the parentheses immediately following the macro name in a function-like macro definition

specification that is strongly recommended as being in keeping with the intent of the standard, but that may be impractical for some implementations

requirement on a program when calling a library function

Despite the similar terms, a runtime-constraint is not a kind of constraint as defined by 3.8, and need not be diagnosed at translation time.

Implementations that support the extensions in annex K are required to verify that the runtime-constraints for a library function are not violated by the program; see K.3.1.4.

precise meaning of the contents of an object when interpreted as having a specific type

unspecified value where each implementation documents how the choice is made

either an unspecified value or a trap representation

valid value of the relevant type where this International Standard imposes no requirements on which value is chosen in any instance

An unspecified value cannot be a trap representation.

an object representation that need not represent a value of the object type

interrupt execution of the program such that no further operations are performed

In this International Standard, when the word ‘‘trap’’ is not immediately followed by ‘‘representation’’, this is the intended usage.2)

⎡ x⎤ ceiling of x: the least integer greater than or equal to x

⎡2. 4⎤ is 3, ⎡−2. 4⎤ is −2.

⎣ x⎦ floor of x: the greatest integer less than or equal to x

⎣2. 4⎦ is 2, ⎣−2. 4⎦ is −3.

For example, ‘‘Trapping or stopping (if supported) is disabled...’’ (F.8.2). Note that fetching a trap representation might perform a trap but is not required to (see 6.2.6.1 ).
April 12, 2011 posix.fail