Q:  Does #pragma make a program non-portable?

A:
    Generally, yes.  Using #pragmas may cause the resulting program to behave
in a non-conforming manner.  #pragma is  used to convey hints to the compiler,
such as the desire to expand a particular function as in-line or suppress
some range checks.  An unrecognized #pragma is ignored.

    However, C99 attempts to bridge this gap by defining some standard pragmas.
If the preprocessing token STDC appears immediately after #pragma, then the
pragmas have meanings as defined by the Standard.  Following are the portable
macros:

    #pragma  STDC FP_CONTRACT          /* Expression evaluation method */
    #pragma  STDC FENV_ACCESS          /* Floating-point environment attributes */
    #pragma  STDC CX_LIMITED_RANGE     /* Complex arithmetic */

    Source: geocities.com/vijoeyz/faq/c

               ( geocities.com/vijoeyz/faq)                   ( geocities.com/vijoeyz)