Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| Path | csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail |
|---|---|
| From | Ian Collins <ian-news@hotmail.com> |
| Newsgroups | comp.lang.c |
| Subject | Re: initialization of local static variable |
| Date | Sat, 08 Oct 2011 11:56:29 +1300 |
| Lines | 54 |
| Message-ID | <9f9ectFtu8U10@mid.individual.net> (permalink) |
| References | <16f1e150-05c8-4e30-a0e3-17aa3182f14d@d28g2000vby.googlegroups.com> <chine.bleu-1373B4.03030507102011@news.eternal-september.org> <j6mkhb$m4s$1@dont-email.me> <9f852eF700U1@mid.uni-berlin.de> <j6mp4b$h3d$1@dont-email.me> <9f8lokFi5lU1@mid.uni-berlin.de> <0.5bf60c50a20af830bcc4.20111007202925BST.87zkhcwqga.fsf@bsb.me.uk> <j6nkfh$3tt$1@speranza.aioe.org> <0.c17dea24b635577dbcc6.20111007211624BST.87hb3kwo9z.fsf@bsb.me.uk> <j6nn1h$al8$1@speranza.aioe.org> <9f9civF6foU1@mid.uni-berlin.de> <j6nv5f$tpq$1@speranza.aioe.org> |
| Mime-Version | 1.0 |
| Content-Type | text/plain; charset=UTF-8; format=flowed |
| Content-Transfer-Encoding | 8bit |
| X-Trace | individual.net jCrIAbVWoE2rrPgwDbX8lA/5Gp+gBZ+80oEa+wku4NmawCDkFp |
| Cancel-Lock | sha1:CiC8WGIhsKqatetfZy9cke7Gt2M= |
| User-Agent | Mozilla/5.0 (X11; U; SunOS i86pc; en-US; rv:1.9.2.9) Gecko/20101021 Lightning/1.0b2 Thunderbird/3.1.4 |
| In-Reply-To | <j6nv5f$tpq$1@speranza.aioe.org> |
| Xref | x330-a1.tempe.blueboxinc.net comp.lang.c:11360 |
Show key headers only | View raw
On 10/ 8/11 11:40 AM, jacob navia wrote:
> Le 08/10/11 00:25, Jens Thoms Toerring a écrit :
>>
>> I don't want to argue if this is wrong - you write the compiler
>> and thus you define what happens - but, at least to me, it does
>> not make things easier to understand or seems to be more cohe-
>> rent since I now also have to consider how a static variable is
>> initialized in order to figure out how it will behave.
>>
>
> Obviously if it is initialized with a constant expression the simple
> rule applies as before: it is initialized once by the linker before
> the program is loaded
>
> If the expression is not constant it will be initialized when the
> program executes the initialization statement (it can't be otherwise
> since it is NOT a constant expression)
>
> I see this as very easy to understand but I could be wrong since
> I program in C since a long time and can't go back to my beginner
> years to verify that it looks coherent to a beginner)
>
> Now, I have a problem with the "once" that Ben pointed out. Should
> I generate code that initializes that ONCE?
>
> For instance I could generate code that tests a memory location to see
> if the variable is initialized or not and skip the initialization
> if it is initialized already.
You probably should do something along those lines, that's how C++ does
it. In C++ a function scope static variable is initialised once the
first time the function is called. You can use a hidden regular file
scope static variable (which will be zero initialised) for the test.
> The whole thing comes down to the existence of an initialization
> procedures (like the C++ constructors) that would allow us to
> write:
>
> double sqrt2_over_2 = sqrt(2)/2;
> int main(void)
> {
> printf("%g\n",sqrt2_over_2);
> }
In C++, file scope static variables are initialised before main is
called, so you could create a hidden function called on entry to main to
get the same effect.
If you are adding C++ like extensions, checking and following the C++
rules would be a good idea. You would be gaining the benefit of the
work done for the C++ standard.
--
Ian Collins
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
initialization of local static variable "V.Subramanian, India" <subramanian100in@yahoo.com> - 2011-10-06 23:33 -0700
Re: initialization of local static variable pete <pfiland@mindspring.com> - 2011-10-07 02:51 -0400
Re: initialization of local static variable "BartC" <bc@freeuk.com> - 2011-10-07 10:44 +0100
Re: initialization of local static variable China Blue Corn Chips <chine.bleu@yahoo.com> - 2011-10-07 03:03 -0700
Re: initialization of local static variable "BartC" <bc@freeuk.com> - 2011-10-07 11:33 +0100
Re: initialization of local static variable jt@toerring.de (Jens Thoms Toerring) - 2011-10-07 11:11 +0000
Re: initialization of local static variable "BartC" <bc@freeuk.com> - 2011-10-07 12:51 +0100
Re: initialization of local static variable jt@toerring.de (Jens Thoms Toerring) - 2011-10-07 15:56 +0000
Re: initialization of local static variable Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-10-07 20:29 +0100
Re: initialization of local static variable jacob navia <jacob@spamsink.net> - 2011-10-07 21:38 +0200
Re: initialization of local static variable Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-10-07 21:16 +0100
Re: initialization of local static variable jacob navia <jacob@spamsink.net> - 2011-10-07 22:22 +0200
Re: initialization of local static variable jt@toerring.de (Jens Thoms Toerring) - 2011-10-07 22:25 +0000
Re: initialization of local static variable jacob navia <jacob@spamsink.net> - 2011-10-08 00:40 +0200
Re: initialization of local static variable Ian Collins <ian-news@hotmail.com> - 2011-10-08 11:56 +1300
Re: initialization of local static variable jacob navia <jacob@spamsink.net> - 2011-10-08 01:53 +0200
Re: initialization of local static variable Jens Gustedt <jens.gustedt@loria.fr> - 2011-10-09 23:04 +0200
Re: initialization of local static variable Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-10-10 11:54 -0500
Re: initialization of local static variable Ike Naar <ike@sverige.freeshell.org> - 2011-10-10 17:41 +0000
Re: initialization of local static variable Andrew Haley <andrew29@littlepinkcloud.invalid> - 2011-10-10 17:35 -0500
Re: initialization of local static variable jt@toerring.de (Jens Thoms Toerring) - 2011-10-08 00:02 +0000
Re: initialization of local static variable "BartC" <bc@freeuk.com> - 2011-10-08 01:26 +0100
Re: initialization of local static variable "Philip Lantz" <prl@canterey.us> - 2011-10-08 03:01 -0700
Re: initialization of local static variable "BartC" <bc@freeuk.com> - 2011-10-07 21:42 +0100
Re: initialization of local static variable China Blue Corn Chips <chine.bleu@yahoo.com> - 2011-10-07 16:25 -0700
Re: initialization of local static variable jacob navia <jacob@spamsink.net> - 2011-10-08 01:51 +0200
Re: initialization of local static variable China Blue Corn Chips <chine.bleu@yahoo.com> - 2011-10-07 18:21 -0700
Re: initialization of local static variable Nobody <nobody@nowhere.com> - 2011-10-08 15:36 +0100
Re: initialization of local static variable Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-10-08 22:06 +0100
Re: initialization of local static variable Nobody <nobody@nowhere.com> - 2011-10-09 05:35 +0100
Re: initialization of local static variable Ben Bacarisse <ben.usenet@bsb.me.uk> - 2011-10-09 09:25 +0100
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-09 11:00 +0200
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-09 10:56 -0700
Re: initialization of local static variable James Kuyper <jameskuyper@verizon.net> - 2011-10-09 14:30 -0400
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-09 21:43 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-10 19:08 +0200
Re: initialization of local static variable Geoff <geoff@invalid.invalid> - 2011-10-10 16:16 -0700
Re: initialization of local static variable Ike Naar <ike@iceland.freeshell.org> - 2011-10-10 23:22 +0000
Re: initialization of local static variable James Kuyper <jameskuyper@verizon.net> - 2011-10-10 20:40 -0400
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-10 20:54 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-11 18:45 +0200
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-11 18:51 +0200
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-11 18:52 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-12 08:49 +0200
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-11 19:48 +0200
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-11 21:25 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-12 08:48 +0200
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-12 08:54 +0200
Re: initialization of local static variable pete <pfiland@mindspring.com> - 2011-10-12 20:55 -0400
Re: initialization of local static variable Barry Schwarz <schwarzb@dqel.com> - 2011-10-11 18:52 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-11 19:55 +0200
Re: initialization of local static variable Keith Thompson <kst-u@mib.org> - 2011-10-11 11:24 -0700
Re: initialization of local static variable Keith Thompson <kst-u@mib.org> - 2011-10-11 12:47 -0700
Re: initialization of local static variable "io_x" <a@b.c.invalid> - 2011-10-12 08:49 +0200
Re: initialization of local static variable Tim Rentsch <txr@alumni.caltech.edu> - 2012-01-24 16:09 -0800
Re: initialization of local static variable China Blue Corn Chips <chine.bleu@yahoo.com> - 2011-10-07 16:06 -0700
Re: initialization of local static variable Seebs <usenet-nospam@seebs.net> - 2011-10-12 22:25 +0000
Re: initialization of local static variable "christian.bau" <christian.bau@cbau.wanadoo.co.uk> - 2011-10-13 07:09 -0700
Re: initialization of local static variable Seebs <usenet-nospam@seebs.net> - 2011-10-17 17:21 +0000
Re: initialization of local static variable Joe Wright <joewwright@comcast.net> - 2011-10-14 14:27 -0400
Re: initialization of local static variable Richard Damon <news.x.richarddamon@xoxy.net> - 2011-10-08 00:03 -0400
Re: initialization of local static variable China Blue Corn Chips <chine.bleu@yahoo.com> - 2011-10-08 01:27 -0700
Re: initialization of local static variable Richard Damon <news.x.richarddamon@xoxy.net> - 2011-10-08 00:08 -0400
csiph-web