-qpack_semantic

Category

Portability and migration

Pragma equivalent

None.

Purpose

Controls the syntax and semantics of the #pragma pack directive.

Syntax

Read syntax diagramSkip visual syntax diagram
                          .-ibm-.   
>>- -q--pack_semantic--=--+-gnu-+------------------------------><

Defaults

-qpack_semantic=ibm

Parameters

gnu
Uses the GCC syntax and semantics for #pragma pack. The effects of this suboption are:
  • The current packing value is independent from the packing stack.
  • Values are only placed on the pack stack with the push parameter. Only values that have been specified with the push parameter can be removed from the stack by the pop parameter.
  • If a #pragma pack directive is specified inside a nested aggregate, it affects the outer, containing aggregate as well.
ibm
Uses the IBM syntax and semantics for #pragma pack. The effects of this suboption are:
  • The current packing value is automatically placed at the top of the packing stack.
  • There is no push parameter. Any value can be removed from the stack by the pop parameter.
  • If a #pragma pack directive is specified inside a nested aggregate, it only affects aggregates that follow it; that is, it can only affected the inner aggregates.

See #pragma pack for full details on the syntax and semantics, as well as examples, of these suboptions.

Usage

You should not need to use this option unless you are porting applications compiled with GCC and need to preserve source-level compatibility with the GCC version of the pragma directive.

Predefined macros

None.

Examples

See #pragma pack for examples.