🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #5613

Re: #pragma

#5613
From: Doug Gwyn
Date: Wed, 18 Jan 1989 22:35
44 lines
2589 bytes
In article <12570002@hpclwjm.HP.COM> walter@hpclwjm.HP.COM (Walter Murray) writes:
>I'm in the same boat.  Maybe it's time for someone to post a summary/update
>on the #pragma question.

There isn't much to tell.  #pragma is constrained by the Standard
only insofar as it must pass through the preprocessing grammar.
I believe several vendors are interested in establishing some
additional agreement about how to format #pragma and in setting
up some way of registering pragmas in order to avoid conflict
among vendors.  Such agreements will not be part of the ANSI C
standard, however.  There may be a special interest group working
on this; I don't know.

>1.  A #pragma causes an implementation to behave in an implementation-defined
>    manner.  Could that include, for example, following unsigned-preserving
>    promotion rules, or must the behavior still be ANSI?

A non-conforming implementation can do whatever it pleases.

A conforming implementation must follow ALL the rules in the
Standard; permitting implementation-defined behavior in specific
circumstances is not to be interpreted as granting license to
ignore other relevant specifications.

>2.  A strictly conforming program shall not produce output dependent on
>    any implementation-defined behavior.  Does it follow that a strictly
>    conforming program shall not use a #pragma?

Only if it affects the output of the program...  We actually wanted
to say that its "meaning" doesn't depend on any unspecified,
undefined, or implementation-defined behavior, but "output" was
the best we could come up with in pure standards language.

In practice, there is NO portable use of #pragma.  A program's output
conceivably MIGHT depend on SOME implementation's handling of a #pragma;
therefore #pragma ought not to be used in a strictly conforming program
(i.e. one intended specifically to be maximally portable).

Really, #pragma is intended to give advice to the compiler such as:
	produce a listing
	optimize this block in a certain way
	assign this data to a certain kind of storage
It can undoubtedly be made to do many other things, not all of them
advisable.
Technical Details
Message-ID: <9430@smoke.BRL.MIL>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!lll-winken!lll-lcc!ames!haven!adm!smoke!gwyn
References: <8770@bloom-beacon.MIT.EDU> <12570002@hpclwjm.HP.COM>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!lll-winken!lll-lcc!ames!haven!adm!smoke!gwyn
From: gwyn@smoke.BRL.MIL (Doug Gwyn )
Newsgroups: comp.std.c
Subject: Re: #pragma
Message-ID: <9430@smoke.BRL.MIL>
Date: 18 Jan 89 22:35:39 GMT
References: <8770@bloom-beacon.MIT.EDU> <12570002@hpclwjm.HP.COM>
Reply-To: gwyn@brl.arpa (Doug Gwyn (VLD/VMB) <gwyn>)
Organization: Ballistic Research Lab (BRL), APG, MD.
Lines: 44