SPDX-License-Identifier: CC-BY-SA-4.0 copyrights: - Copyright (C) 2020 embedded brains GmbH & Co. KG enabled-by: true functional-type: function links: - role: interface-function uid: ../if/typeof-refx rationale: | From the GNU C compiler documentation: The operand of ${../if/typeof-refx:/params[1]/name} is evaluated for its side effects if and only if it is an expression of variably modified type or the name of such a type. references: [] requirement-type: functional text: | When the argument value of ${../if/typeof-refx:/params[0]/name} consists of a sequence of *i* ``*`` and the type of the other argument has *i* or less than *i* nested pointers (for example ``*`` for a pointer to ``int``, ``**`` for a pointer to a pointer of ``int``, ``***`` for a pointer to a pointer to a pointer to ``int``), and ${../if/typeof-refx:/params[1]/name} is either a pointer type (possibly with qualifiers) or an expression of such a pointer type, the macro ${../if/typeof-refx:/name} shall result in a type expression which is the type of argument ${../if/typeof-refx:/params[1]/name} with the given number of pointers removed. type: requirement