C++ Logo


Advanced search

[std-proposals] Small C compatibility extensions for array

From: blacktea hamburger <greenteahamburger_at_[hidden]>
Date: Sun, 23 Oct 2022 20:23:57 +0800
cppreference <https://en.cppreference.com/w/c/language/array>:

*[* *static*(optional) qualifiers(optional) expression(optional) *]*
attr-spec-seq(optional) (1)
*[* qualifiers(optional) *static*(optional) expression(optional) *]*
attr-spec-seq(optional) (2)
expression - any expression other than comma operator
designates the number of elements in the array
qualifiers - any combination of const
<https://en.cppreference.com/w/c/language/const>, restrict
<https://en.cppreference.com/w/c/language/restrict>, or volatile
<https://en.cppreference.com/w/c/language/volatile> qualifiers, only
allowed in function parameter lists; this qualifies the pointer type to
which this array parameter is transformed

In function parameter lists, additional syntax elements are allowed within
the array declarators: the keyword *static* and qualifiers, which may
appear in any order before the size expression (they may also appear even
when the size expression is omitted).

In each function call
<https://en.cppreference.com/w/c/language/operator_other#Function_call> to
a function where an array parameter uses the keyword *static* between *[*
 and *]*, the value of the actual parameter must be a valid pointer to the
first element of an array with at least as many elements as specified by

If qualifiers are present, they qualify the pointer type to which the array
parameter type is transformed

They are also useful for C++ and improve C compatibility.

Received on 2022-10-23 12:24:25