comp.lang.ada
 help / color / mirror / Atom feed
From: Jeffrey Carter <spam@spam.com>
Subject: Re: How to Emulate C++ Macro with Static Local Variable?
Date: Mon, 29 Sep 2003 18:12:00 GMT
Date: 2003-09-29T18:12:00+00:00	[thread overview]
Message-ID: <QB_db.9109$NX3.941@newsread3.news.pas.earthlink.net> (raw)
In-Reply-To: <uhe2vvdzk.fsf@sandia.gov>

taashlo@sandia.gov wrote:

> tmoran@acm.org writes:
 >
>> void log(int *t){if(*t++ > 100)raise_the_exception;}
>> #define LOG if (1) { \
>>    static int t_; \
>>    log(&t_);\
>>  } else ((void)0)

Are ints in C++ automatically initialized to zero? I admit my C++ is not 
very good, but this looks as if it could raise the exception after fewer 
than 100 invokations, or after 101 invocations. (I assume this is C++ 
and not C because I don't recall C having exceptions.)

> There's only two options that I can think of:
> 
> 1) Use a unique ID for each call.  But this turns into a maintenance
> nightmare when you get a few hundred calls or more.
> 
> 2) Use the return address of the call.  But there was a short discussion
> about how Ada doesn't currently have a way of accessing the return
> address of a subprogram.

3. Use a unique instantiation of a generic package for each call. The 
instantiations of the package must be at a nesting level that ensures 
that they will exist for the entire lifetime of the executable region in 
which they are used.

-- 
Jeff Carter
"You tiny-brained wipers of other people's bottoms!"
Monty Python & the Holy Grail
18




  reply	other threads:[~2003-09-29 18:12 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-09-24 22:06 How to Emulate C++ Macro with Static Local Variable? taashlo
2003-09-24 23:44 ` Robert I. Eachus
2003-09-25  3:27   ` Hyman Rosen
2003-09-25  4:53     ` tmoran
2003-09-25 15:57       ` Robert I. Eachus
2003-09-25 19:09         ` tmoran
2003-09-29 14:57           ` taashlo
2003-09-29 18:12             ` Jeffrey Carter [this message]
2003-09-29 18:51               ` taashlo
2003-09-30  1:32                 ` Jeffrey Carter
2003-09-30  1:54                   ` tmoran
2003-09-30 13:02                   ` taashlo
2003-09-30 20:25                     ` Jeffrey Carter
2003-09-30  2:45             ` Robert I. Eachus
2003-09-30  3:24               ` tmoran
2003-09-25 13:43     ` Stephen Leake
2003-09-25 12:59   ` Tad Ashlock
2003-09-25 16:11     ` Robert I. Eachus
2003-09-25 18:13       ` Randy Brukardt
2003-09-25 23:40         ` Robert I. Eachus
2003-09-25 11:54 ` Gautier
2003-09-25 16:14   ` Robert I. Eachus
2003-09-25 18:06   ` Tad Ashlock
2003-09-28  8:42     ` Gautier Write-only
2003-09-28 20:06       ` Jeffrey Carter
2003-09-29  2:13         ` Gautier Write-only
2003-09-25 13:41 ` Stephen Leake
2003-09-25 17:23   ` Tad Ashlock
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox