From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,f34f1a1939dc0c40 X-Google-Attributes: gid103376,public From: "Marin D. Condic" Subject: Re: conditional compilation Date: 2000/07/31 Message-ID: <39857E5F.33C40014@acm.com>#1/1 X-Deja-AN: 652763409 Content-Transfer-Encoding: 7bit References: <87d7jvp3qq.fsf@chiark.greenend.org.uk> Organization: Quadrus Corporation X-Sender: "Marin D. Condic" (Unverified) X-Server-Date: 31 Jul 2000 13:25:36 GMT Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 2000-07-31T13:25:36+00:00 List-Id: Matthew Woodcraft wrote: > > I noticed the following statement in the Steelman requirements: > > "6C. Conditional Control. There shall be conditional control structures > that permit selection among alternative control paths. > ... > Only the selected branch shall be compiled when the discriminating > condition is a translation time expression." > > Am I right in thinking that the second sentence above isn't true of > Ada-as-we-know-it (for example, if a non-selected branch has a > compile-time error)? > I know from experience with a few different embedded compilers that it was a common optimization to remove dead code. A construct such as: declare Debug : constant Boolean := False ; begin if (Debug) then Do_Some_Stuff ; else Do_Some_Other_Stuff ; end if ; end ; would result in the call to Do_Some_Stuff being removed from the object code. It was a reasonably effective method of getting conditional compilation. However, I don't recall that the unreachable code could ever be syntactically incorrect - or why you would want it to be. Of course the weakness of this is that you can't pull this trick in a declarative part. It would be nice to have a mechanism for controlling that sort of thing as well. (Yes, GNAT has pragma Debug - it's just not part of the standard - yet.) Now I'm not sure that a true conditional compilation feature based on lexical exclusion is really such a good idea. I've been doing a lot of C++ work lately using Visual C++/MFC and it never ceases to amaze me that people actually *like* this kind of thing. I'm constantly tracking down problems related to #ifdef and #include causing multiple instances of things getting brought in - or not. And of course, the compiler doesn't care because its C. Would Ada really want to get caught up in that web? BTW: Visual C++ has a *really* nice debugger. But then again, it needs it. :-) It would be nice to see an environment this powerful for Ada. MDC -- ====================================================================== Marin David Condic - Quadrus Corporation - http://www.quadruscorp.com/ Send Replies To: m c o n d i c @ q u a d r u s c o r p . c o m Visit my web site at: http://www.mcondic.com/ "Nothing in the world is more dangerous than sincere ignorance and conscientious stupidity." -- Martin Luther King, Jr ======================================================================