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/dequalify-depthx rationale: | ${../if/dequalify-depthx:/name} checks for incompatible pointer types. references: [] requirement-type: functional text: | When the argument value of ${../if/dequalify-depthx:/params[0]/name} consists of a sequence of *i* ``*`` and the types of both other arguments both have *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/dequalify-depthx:/params[1]/name} is a pointer type with different (compared to the type of ${../if/dequalify-depthx:/params[2]/name}) qualifiers (such as ``const`` or ``volatile``) or the same qualifiers or without any qualifiers, and the types of ${../if/dequalify-depthx:/params[1]/name} and ${../if/dequalify-depthx:/params[2]/name} are compatible in the sense of C, the macro ${../if/dequalify-depthx:/name} shall result in an expression which returns a pointer of type ${../if/dequalify-depthx:/params[1]/name} pointing to the same address as ${../if/dequalify-depthx:/params[2]/name}. type: requirement