### #pragma disjoint (C)

The #pragma disjoint directive lists the identifiers that are not aliased to each other within the scope of their use.

where identifier is a primary expression that can be the name of an operator function, conversion function, destructor, or a qualified name.

The directive informs the compiler that none of the identifiers listed shares the same physical storage, which provides more opportunity for optimizations. If any identifiers actually share physical storage, the pragma may give incorrect results.

The pragma can appear anywhere in the source program that a declaration is allowed. An identifier in the directive must be visible at the point in the program where the pragma appears. The identifiers in the disjoint name list cannot refer to any of the following:

- A member of a structure, or union
- A structure, union, or enumeration tag
- An enumeration constant
- A typedef name
- A label

The identifiers must be declared before they are used in the pragma. A pointer in the identifier list must not have been dereferenced or used as a function argument before appearing in the directive.

The -qignprag compiler option causes aliasing pragmas to be ignored. Use this option to debug applications containing the #pragma disjoint directive.

Preprocessor Directives

#pragma Preprocessor Directives
List of Preprocessor Directives
Example of the #pragma disjoint Preprocessor Directive