#pragma
Preprocessor directive
Syntax
`
#pragma option [ = value ]
` Or`
#pragma push ( option [, value ] )
` Or`
#pragma pop ( option )
`
Parameters
Possible values for `option` and related `value`s:

Option | Value | Description
msbitfields | 0 | Use bitfields compatible with gcc (default)
| -1 (or any other non-zero value) | Use bitfields compatible with those used in Microsoft C compilers
once | N/A | cause the source file in which the pragma appears to behave as though it was included with #include once ...
constness | 0 | cause the source file in which the pragma appears to disable 'CONST qualifier discarded' warning
| -1 (or any other non-zero value) | cause the source file in which the pragma appears to enable 'CONST qualifier discarded' warning

If value is not given, the compiler assumes -1 (TRUE).
Description
Allows the setting of compiler options inside the source code.
Push saves the current value of the option onto a stack, then assigns the new value (or -1) to it. Pop restores the option to its previous value, and removes it from the stack. This mechanism allows options to be changed for a certain part of source code, regardless of the setting used by the context, which is especially useful inside #include header files.
`constness` pragma is added for testing fbc compiler. It will be removed in future at should not be relied upon.
Example
`
'' MSVC-compatible bitfields: save the current setting and then enable them
#pragma push(msbitfields)
'' do something that requires MS-compatible bitfields here
'' restore original setting
#pragma pop(msbitfields)
`
Differences from QB

- New to FreeBASIC

See also

- `#include`