mega8

Mar 27, 2006 15 Replies
ðÒÉ×ÅÔ, All !


þÔÏ-ÔÏ Ñ ÎÅ ÐÏÊÍÕ, ÔÏÌÉ ÌÙÖÉ ÎÅ ÅÄÕÔ, ÔÏÌÉ ÒÕËÉ ÉÚ Ö ÒÁÓÔÕÔ. ËÒÉÓÔÁÌÌ - ÍÅÇÁ8, ÐÏ ÉÄÅÅ ÄÏÌÖÎÁ ÍÉÇÁÔØ Ó×ÅÔÏÄÉÏÄÉËÏÍ ÎÁ portb2. ËÏÍÐÉÌÑÔÏÒ - ÇÃÃ, ÛØÀ É ×ÅÒÉÆÉÃÉÒÕÀ ÂÁÊÔÂÌÁÓÔÅÒ/avreal. ÄÒÕÇÏÊ ÉÓÈÏÄÎÉË ÂÅÚ ÐÒÅÒÙ×ÁÎÉÊ É Ó ÚÁÄÅÒÖËÁÍÉ ÞÅÒÅÚ delay() × ÔÏÊ ÖÅ ÓÈÅÍÅ Ó×ÅÔÏÄÉÏÄÉËÏÍ ÍÉÇÁÌ, ÔÁË ÞÔÏ ÐÒÏÂÌÅÍÁ Ñ×ÎÏ × ÉÓÈÏÄÎÉËÅ.



þÔÏ Ñ ÄÅÌÁÀ ÎÅ ÔÁË? ëÁË ÎÁÄÏ? éÄÅÑ ÂÙÌÁ ÐÏÓÔÁ×ÉÔØ ÐÒÅÄÄÅÌÉÔÅÌØ 256, ÐÒÅÄÅÌ 625, ÞÁÓÔÏÔÕ ×ÓÔÒÏÅÎÎÏÇÏ RC ÇÅÎÅÒÁÔÏÒÁ 8 íçÃ, ÐÏÌÕÞÉÔØ 50çà ÐÒÅÒÙ×ÁÎÉÑ.

=== Cut ÎÅÒÁÂÏÞÅÅ === #include <inttypes.h>



#include <avr/io.h>



#include <avr/interrupt.h>



#include <avr/delay.h>



#include <avr/signal.h>


void init() { TIMSK = (1<<TOIE1); TCCR1B = 0x0D; TCCR1A = 0xA0; OCR1A = 0x271; DDRB = 2; PORTB = 2; OCR1A = 625; }



SIGNAL(SIG_OVERFLOW1) { static uint8_t cnt = 0; cnt++; if (cnt > 50) cnt = 0; if (cnt == 25) PORTB = 0; if (cnt == 00) PORTB = 2; }



int main() { init (); sei (); for(;;) { } return 0; } === Cut ===


=== Cut ÒÁÂÏÞÅÅ=== #include <inttypes.h>



#include <avr/io.h>



#include <avr/interrupt.h>



#include <avr/delay.h>


void ioinit() { cli(); DDRB |= 0x02; // pb1 out PORTB &= 0xFD; // pbl ground }



void delay(uint16_t t) // in ms { uint16_t a; for(a=0;a<250*8;a++) { _delay_loop_2(t); } }



int main(void) { ioinit(); for(;;) { PORTB |= 0x02; //pb1 pin delay(100); PORTB &= 0xFD; delay(100); }; return 0; } === Cut ===



. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ÉÚÍÅÎÁ - ÜÔÏ... ÎÕ... ÐÁpÏÌØ pÕÔÏ×ÙÊ ÎÁ ÉÎÓÔÉÔÕÔÓËÏÊ ÂÏpÄÅ ×Ù×ÅÓÉÔØ...


Hello, Alex! You wrote to "Alexander Lavrov" snipped-for-privacy@p80.f.n6023.z2.fidonet.org>to Alexander Lavrov on 28 Mar

06 14:38:57:

NA>>> static uint8_t cnt = 0; AL>> ^^^ AM> ^^^^^^^^

é ÞÔÏ, "static uint8_t cnt;" ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ? ðÒÁ×ÄÁ GCC Ñ ÎÅ ÚÎÁÀ, ÎÏ ÐÏ ÁÎÁÌÏÇÉÉ Ó IARÏÍ ÄÏÌÖÎÏ ÂÙÔØ ÉÍÅÎÎÏ ÔÁË.

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

ðÒÉ×ÅÔ Alexander!

28 Mar 06 10:56, Alexander Lavrov ÐÉÓÁÌ Nickita A Startcev:

NA>> static uint8_t cnt = 0; AL> ^^^ ^^^^^^^^

÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... ÷ ÓÉÓÔÅÍÅ ×ÏÚÍÏÖÎÏ ÂÅÓËÏÎÅÞÎÏÅ ÞÉÓÌÏ ÐÒÏÃÅÓÓÏ× - ÄÏ 256.

Hello, Alex! You wrote to "Alexander Lavrov" snipped-for-privacy@p80.f.n6023.z2.fidonet.org>to Alexander Lavrov on 28 Mar

06 18:21:04:

AM> 28 Mar 06 13:18, Alexander Lavrov ÐÉÓÁÌ Alex Mogilnikov:

NA>>>>> static uint8_t cnt = 0; AL>>>> ^^^ AM>>> ^^^^^^^^

AL>> é ÞÔÏ, "static uint8_t cnt;" ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ?

AM> âÕÄÅÔ. íÏÖÅÔ Ñ ÎÅ×ÅÒÎÏ ÐÏÎÑÌ, ÞÔÏ ÏÚÎÁÞÁÅÔ Ô×ÏÅ "^^^"? þÔÏ ÔÙ ÉÍÅÌ AM> × ×ÉÄÕ? ôÏ, ÞÔÏ ÎÅ ÎÁÄÏ ÓÔÁÔÉÞÅÓËÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÒÉÓ×ÁÉ×ÁÔØ ÚÎÁÞÅÎÉÅ ÐÒÉ ×ÈÏÄÅ × ÐÒÏÃÅÄÕÒÕ.

With best regards, . E-mail: snipped-for-privacy@p80.f.n6023.z2.fidonet.org

ðÒÉ×ÅÔ Alexander!

28 Mar 06 13:18, Alexander Lavrov ÐÉÓÁÌ Alex Mogilnikov:

NA>>>> static uint8_t cnt = 0; AL>>> ^^^ AM>> ^^^^^^^^

AL> é ÞÔÏ, "static uint8_t cnt;" ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ?

âÕÄÅÔ. íÏÖÅÔ Ñ ÎÅ×ÅÒÎÏ ÐÏÎÑÌ, ÞÔÏ ÏÚÎÁÞÁÅÔ Ô×ÏÅ "^^^"? þÔÏ ÔÙ ÉÍÅÌ × ×ÉÄÕ? ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... G8: ÉÎÏÇÄÁ ÌÕÞÛÅ ÄÉÒÉÖÉÒÏ×ÁÔØ, ÞÅÍ ÇÏ×ÏÒÉÔØ.
ðÒÉ×ÅÔ Alexander!

28 Mar 06 17:46, Alexander Lavrov ÐÉÓÁÌ Alex Mogilnikov:

AM>> âÕÄÅÔ. íÏÖÅÔ Ñ ÎÅ×ÅÒÎÏ ÐÏÎÑÌ, ÞÔÏ ÏÚÎÁÞÁÅÔ Ô×ÏÅ "^^^"? þÔÏ ÔÙ AM>> ÉÍÅÌ × ×ÉÄÕ? AL> ôÏ, ÞÔÏ ÎÅ ÎÁÄÏ ÓÔÁÔÉÞÅÓËÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÒÉÓ×ÁÉ×ÁÔØ ÚÎÁÞÅÎÉÅ ÐÒÉ ×ÈÏÄÅ AL> × ÐÒÏÃÅÄÕÒÕ.

ôÏÇÄÁ ÕÞÉÔØ ÍÁÔÞÁÓÔØ. üÔÏ ÎÅ ÐÒÉÓ×ÁÉ×ÁÎÉÅ, É ÉÎÉÃÉÁÌÉÚÁÃÉÑ. á ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÓÔÁÔÉÞÅÓËÉÈ ÐÅÒÅÍÅÎÎÙÈ (× ÏÔÌÉÞÉÅ ÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÈ) ÐÒÏÉÚ×ÏÄÉÔÓÑ × ÓÔÁÒÔÁÐÅ, ÄÏ ×ÙÚÏ×Á main(), Á ÎÅ ÐÒÉ ×ÈÏÄÅ × ÂÌÏË. éÍÅÎÎÏ ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄÕ, ÐÏÄÞÅÒËÎÕ× _static_. ÷ÓÅÇÏ ÎÁÉÌÕÞÛÅÇÏ, [Team PCAD 2000] áÌÅËÓÅÊ í. ... óÔÁÒÙÊ ÇÌÀË ÌÕÞÛÅ ÎÏ×ÙÈ Ä×ÕÈ...
ðÒÉ×ÅÔ, Alexander !

28 Mar 06 , 17:46 Alexander Lavrov ÐÉÓÁÌ Ë Alex Mogilnikov:

AL>>> é ÞÔÏ, "static uint8_t cnt;" ÎÅ ÂÕÄÅÔ ÒÁÂÏÔÁÔØ?

AM>> âÕÄÅÔ. íÏÖÅÔ Ñ ÎÅ×ÅÒÎÏ ÐÏÎÑÌ, ÞÔÏ ÏÚÎÁÞÁÅÔ Ô×ÏÅ "^^^"? þÔÏ ÔÙ AM>> ÉÍÅÌ × ×ÉÄÕ? AL> ôÏ, ÞÔÏ ÎÅ ÎÁÄÏ ÓÔÁÔÉÞÅÓËÏÊ ÐÅÒÅÍÅÎÎÏÊ ÐÒÉÓ×ÁÉ×ÁÔØ ÚÎÁÞÅÎÉÅ ÐÒÉ ×ÈÏÄÅ AL> × ÐÒÏÃÅÄÕÒÕ.

÷ÏÔ ÔÅÓÔ, ËÏÒÒÅËÔÎÙÊ Ó ÔÏÞËÉ ÚÒÅÎÉÑ ÑÚÙËÁ É ÉÌÌÀÓÔÒÉÒÕÀÝÉÊ ÔÏ, ÞÔÏ ÓÔÁÔÉÞÅÓËÉÅ ÐÅÒÅÍÅÎÎÙÅ ÉÎÉÃÉÁÌÉÚÉÒÕÀÔÓÑ ÔÏÌØËÏ ÄÏ ×ÙÐÏÌÎÅÎÉÑ main() É ÎÅ ÐÅÒÅÉÎÉÃÉÁÌÉÚÉÒÕÀÔÓÑ ÐÒÉ ËÁÖÄÏÍ ÚÁÐÕÓËÅ ÄÁÎÎÏÊ ÐÒÏÃÅÄÕÒÙ.

=== Cut /tmp/a.c === #include <stdio.h>

#include <stdlib.h>

int test() { static int z = 0; z++; printf("z=%i\n",z); }

main() { test(); test(); test(); return 0; } === Cut === # gcc a.c # ./a.out >z.log

=== Cut z.log === z=1 z=2 z=3 === Cut ===

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... ÂÁÛÎÉ-×ÉÒÔÕÁÌÙ

ðÒÉ×ÅÔ, Alexander !

28 Mar 06 , 10:56 Alexander Lavrov ÐÉÓÁÌ Ë Nickita A Startcev:

NA>> static uint8_t cnt = 0; AL> ^^^

é ÞÔÏ? HÅ ÐÏÎÑÌ. óÔÁÔÉÞÅÓËÁÑ ÐÅÒÅÍÅÎÎÁÑ ÄÏÌÖÎÁ ÓÏÈÒÁÎÑÔØ Ó×ÏÅ ÓÏÓÔÏÑÎÉÅ ÍÅÖÄÕ ×ÙÚÏ×ÁÍÉ, Á ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØÓÑ ÔÏÌØËÏ ÐÒÉ ÓÔÁÒÔÅ. á Ñ ÓËÏÒÅÅ ×ÓÅÇÏ ÐÅÒÅÍÕÄÒÉÌ Ó ÉÎÉÃÉÁÌÉÚÁÃÉÅÊ ÜÔÏÇÏ ÓÁÍÏÇÏ óôó ÒÅÖÉÍÁ, ÎÏ ÞÔÏ ÉÍÅÎÎÏ Õ ÍÅÎÑ ÔÁÍ ÎÅ ÔÁË Ñ ÐÏÎÑÔØ ÎÅ ÍÏÇÕ.

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... âÙÓÔÒÏÒÁÓÔ×ÏÒÉÍÙÅ ÂÕÔÅÒÂÒÏÄÙ

Wed Mar 29 2006 09:51, Harry Zhurov wrote to Alex Mogilnikov:

HZ> From: "Harry Zhurov" snipped-for-privacy@online.nsk.su>

HZ> Tue, 28 Mar 2006 19:51:01 +0400 Alex Mogilnikov wrote to Alexander HZ> Lavrov:

AM>> á ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÓÔÁÔÉÞÅÓËÉÈ ÐÅÒÅÍÅÎÎÙÈ (× ÏÔÌÉÞÉÅ ÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÈ) AM>> ÐÒÏÉÚ×ÏÄÉÔÓÑ × ÓÔÁÒÔÁÐÅ, ÄÏ ×ÙÚÏ×Á main(), Á ÎÅ ÐÒÉ ×ÈÏÄÅ × ÂÌÏË. éÍÅÎÎÏ AM>> ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄÕ, ÐÏÄÞÅÒËÎÕ× _static_.

HZ> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆÕÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ HZ> ×ÐÏÌÎÅ ÉÍÅÀÔ ÐÒÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐÒÉ ÐÅÒ×ÏÍ ×ÙÚÏ×Å HZ> ÆÕÎËÃÉÉ.

HÅÔ.

5.1.2 Execution environments

1 Two execution environments are defined: freestanding and hosted. In both cases, program startup occurs when a designated C function is called by the execution environment. All objects with static storage duration shall be initialized (set to their initial values) before program startup. The manner and timing of such initialization are otherwise unspecified. Program termination returns control to the execution environment.

6.2.4 Storage durations of objects

An object whose identifier is declared with external or internal linkage, or with the storage-class specifier "static" has static storage duration. Its lifetime is the entire execution of the program and its stored value is initialized only once, prior to program startup.

"ðÒÏÓ×ÅÝÅÎÉÅ ×ÎÅÄÒÑÔØ Ó ÕÍÅÒÅÎÎÏÓÔØÀ, ÐÏ ×ÏÚÍÏÖÎÏÓÔÉ ÉÚÂÅÇÁÑ ËÒÏ×ÏÐÒÏÌÉÔÉÑ"

Tue, 28 Mar 2006 19:51:01 +0400 Alex Mogilnikov wrote to Alexander Lavrov:

AM> á ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÓÔÁÔÉÞÅÓËÉÈ ÐÅÒÅÍÅÎÎÙÈ (× ÏÔÌÉÞÉÅ ÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÈ) AM> ÐÒÏÉÚ×ÏÄÉÔÓÑ × ÓÔÁÒÔÁÐÅ, ÄÏ ×ÙÚÏ×Á main(), Á ÎÅ ÐÒÉ ×ÈÏÄÅ × ÂÌÏË. éÍÅÎÎÏ AM> ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄÕ, ÐÏÄÞÅÒËÎÕ× _static_.

üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆÕÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ ×ÐÏÌÎÅ ÉÍÅÀÔ ÐÒÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐÒÉ ÐÅÒ×ÏÍ ×ÙÚÏ×Å ÆÕÎËÃÉÉ.
èÁÊÌØ çÉÔÌÅp ËÁÐyÔ, Harry! ópÅÄÁ íÁpÔ 29 2006 07:51, Harry Zhurov wrote to Alex Mogilnikov:

AM>> éÍÅÎÎÏ ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄy, ÐÏÄÞÅpËÎy× _static_. HZ> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆyÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ HZ> ×ÐÏÌÎÅ ÉÍÅÀÔ ÐpÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐpÉ ÐÅp×ÏÍ ×ÙÚÏ×Å HZ> ÆyÎËÃÉÉ. ÷Ï-ÐÅp×ÙÈ, ËÁË ÔÙ ÓÅÂÅ ÜÔÏ ÐpÅÄÓÔÁ×ÌÑÅÛØ ÎÁ ypÏ×ÎÅ ÁÓÍÁ? :) ÷Ï-×ÔÏpÙÈ, ÐpÏÝÅ É ÄÅÛÅ×ÌÅ ÐpÏÉÎÉÔÉÔØ ÐÅpÅÍÅÎÎyÀ ÅÝÅ ÎÁ ÓÔÁÄÉÉ ËÏÍÐÉÌÑÃÉÉ, ÂÌÁÇÏ ÌÅÖÉÔ ÏÎÁ × ÓÅÇÍÅÎÔÅ ÄÁÎÎÙÈ, ÚÁÔpÁÔÙ ÐpÁËÔÉÞÅÓËÉ ÎyÌÅ×ÙÅ.

íÁÊËÌ

Wed, 29 Mar 2006 08:14:25 +0400 Yuriy K wrote to Harry Zhurov:

AM>>> á ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÓÔÁÔÉÞÅÓËÉÈ ÐÅÒÅÍÅÎÎÙÈ (× ÏÔÌÉÞÉÅ ÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÈ) AM>>> ÐÒÏÉÚ×ÏÄÉÔÓÑ × ÓÔÁÒÔÁÐÅ, ÄÏ ×ÙÚÏ×Á main(), Á ÎÅ ÐÒÉ ×ÈÏÄÅ × ÂÌÏË. éÍÅÎÎÏ AM>>> ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄÕ, ÐÏÄÞÅÒËÎÕ× _static_.

HZ>> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆÕÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ HZ>> ×ÐÏÌÎÅ ÉÍÅÀÔ ÐÒÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐÒÉ ÐÅÒ×ÏÍ ×ÙÚÏ×Å HZ>> ÆÕÎËÃÉÉ.

YK> HÅÔ.

YK> 5.1.2 Execution environments

YK> 1 Two execution environments are defined: freestanding and hosted. YK> In both cases, program startup occurs when a designated C function YK> is called by the execution environment. YK> All objects with static storage duration shall be initialized (set YK> to their initial values) before program startup. YK> The manner and timing of such initialization are otherwise unspecified. YK> Program termination returns control to the execution environment.

YK> 6.2.4 Storage durations of objects

YK> An object whose identifier is declared with external or internal linkage, YK> or with the storage-class specifier "static" has static storage duration. YK> Its lifetime is the entire execution of the program and its stored YK> value is initialized only once, prior to program startup.

äÁ.

6.7.4

The zero-initialization (8.5) of all local objects with static storage duration (3.7.1) is performed before any other initialization takes place. A local object of POD type (3.9) with static storage duration initialized with constant-expressions is initialized before its block is first entered. An implementation is permitted to perform early initialization of other local objects with static storage duration under the same conditions that an implementation is permitted to statically initialize an object with static storage duration in namespace scope (3.6.2). Otherwise such an object is initialized the first time control passes through its declaration; such an object is considered initialized upon the completion of its initialization.

Wed, 29 Mar 2006 19:09:25 +0400 Michael Mamaev wrote to Harry Zhurov:

AM>>> éÍÅÎÎÏ ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄy, ÐÏÄÞÅpËÎy× _static_. HZ>> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆyÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ HZ>> ×ÐÏÌÎÅ ÉÍÅÀÔ ÐpÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐpÉ ÐÅp×ÏÍ ×ÙÚÏ×Å HZ>> ÆyÎËÃÉÉ. MM> ÷Ï-ÐÅp×ÙÈ, ËÁË ÔÙ ÓÅÂÅ ÜÔÏ ÐpÅÄÓÔÁ×ÌÑÅÛØ ÎÁ ypÏ×ÎÅ ÁÓÍÁ? :)

ðÒÉÞÅÍ ÚÄÅÓØ ÁÓÍ? åÓÌÉ ÔÙ ÐÒÏ ÒÅÁÌÉÚÁÃÉÀ, ÔÏ ÄÅÌÁÅÔÓÑ ÜÔÏ ×ÐÏÌÎÅ ÜÌÅÍÅÎÔÁÒÎÏ, ÈÏÔÑ ÎÁËÌÁÄÎÙÅ ÒÁÓÈÏÄÙ ÍÏÇÕÔ ÂÙÔØ ÂÏÌØÛÅ.

MM> ÷Ï-×ÔÏpÙÈ, ÐpÏÝÅ É ÄÅÛÅ×ÌÅ ÐpÏÉÎÉÔÉÔØ ÐÅpÅÍÅÎÎyÀ ÅÝÅ ÎÁ ÓÔÁÄÉÉ ËÏÍÐÉÌÑÃÉÉ, MM> ÂÌÁÇÏ ÌÅÖÉÔ ÏÎÁ × ÓÅÇÍÅÎÔÅ ÄÁÎÎÙÈ, ÚÁÔpÁÔÙ ÐpÁËÔÉÞÅÓËÉ ÎyÌÅ×ÙÅ.

ëÁË ÜÔÏ ÔÙ ÓÏÂÒÁÌÓÑ ÉÎÉÔÉÔØ ÎÁ ÓÔÁÄÉÉ ËÏÍÐÉÌÑÃÉÉ? ÷ÓÅ ÉÎÉÔÉÔÓÑ ÎÁ ÒÁÎÔÁÊÍÅ, × ËÒÁÊÎÅÍ ÓÌÕÞÁÅ - × ÚÁÇÒÕÖÁÅÍÙÈ ÐÒÏÃÁÈ (Ô.Å. ÇÄÅ ÐÒÏÇÒÁÍÍÁ ÐÅÒÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ÚÁÇÒÕÖÁÅÔÓÑ × ïúõ), - ÎÁ ÜÔÁÐÅ ÚÁÇÒÕÚËÉ. üÔÏ ÔÏÖÅ Ó×ÏÅÇÏ ÒÏÄÁ ÒÁÎÔÁÊÍ, ÕÖ ÎÉËÁË ÎÅ ÓÔÁÄÉÑ ËÏÍÐÉÌÑÃÉÉ. üÆÆÅËÔÉ×ÎÏÓÔØ - ÄÒÕÇÏÊ ×ÏÐÒÏÓ, ÒÅÞØ ÉÄÅÔ ÐÒÏ ÐÒÁ×ÉÌÁ ÑÚÙËÁ. åÄÉÎÓÔ×ÅÎÎÏÅ, ÔÕÔ ÎÁÄÏ ÕÔÏÞÎÑÔØ, ËÁËÏÊ ÑÚÙË ÒÁÓÓÍÁÔÒÉ×ÁÅÔÓÑ (× ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÍÏÇÕÔ ×ÏÚÎÉËÎÕÔØ ÎÅÄÏÒÁÚÕÍÅÎÉÑ, ËÁË × ÜÔÏÍ ÔÒÅÄÅ). ó ÔÏÞËÉ ÚÒÅÎÉÑ ÚÄÒÁ×ÏÇÏ ÓÍÙÓÌÁ ÎÅÔ ÎÅÏÂÈÏÄÉÍÏÓÔÉ ÔÒÅÂÏ×ÁÔØ ÉÎÉÃÉÁÌÉÚÁÃÉÉ ÓÔÁÔÉÞÅÓËÉÈ ÌÏËÁÌØÎÙÈ ÏÂßÅËÔÏ× ÎÁ ÓÔÁÒÔÁÐÅ, ÜÔÉ ÏÂßÅËÔÙ ÄÏÌÖÎÙ ÂÙÔØ ÐÒÏÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÙ ÄÏ ÐÅÒ×ÏÇÏ ÉÓÐÏÌØÚÏ×ÁÎÉÑ. á ÇÄÅ ÜÔÏ ÄÅÌÁÅÔÓÑ - ×ÏÐÒÏÓ ÒÅÁÌÉÚÁÃÉÉ.

Thu Mar 30 2006 10:21, Harry Zhurov wrote to Yuriy K:

AM>>>> á ÉÎÉÃÉÁÌÉÚÁÃÉÑ ÓÔÁÔÉÞÅÓËÉÈ ÐÅÒÅÍÅÎÎÙÈ (× ÏÔÌÉÞÉÅ ÔÏ Á×ÔÏÍÁÔÉÞÅÓËÉÈ) AM>>>> ÐÒÏÉÚ×ÏÄÉÔÓÑ × ÓÔÁÒÔÁÐÅ, ÄÏ ×ÙÚÏ×Á main(), Á ÎÅ ÐÒÉ ×ÈÏÄÅ × ÂÌÏË. AM>>>> éÍÅÎÎÏ ÜÔÏ Ñ É ÉÍÅÌ × ×ÉÄÕ, ÐÏÄÞÅÒËÎÕ× _static_.

HZ>>> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆÕÎËÃÉÉ) ÓÔÁÔÉÞÅÓËÉÅ HZ>>> ×ÐÏÌÎÅ ÉÍÅÀÔ ÐÒÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐÒÉ ÐÅÒ×ÏÍ ×ÙÚÏ×Å HZ>>> ÆÕÎËÃÉÉ.

YK>> HÅÔ.

YK>> 5.1.2 Execution environments

YK>> 1 Two execution environments are defined: freestanding and hosted. YK>> In both cases, program startup occurs when a designated C function YK>> is called by the execution environment. YK>> All objects with static storage duration shall be initialized (set YK>> to their initial values) before program startup. YK>> The manner and timing of such initialization are otherwise unspecified. YK>> Program termination returns control to the execution environment.

YK>> 6.2.4 Storage durations of objects

YK>> An object whose identifier is declared with external or internal YK>> linkage, or with the storage-class specifier "static" has static YK>> storage duration. Its lifetime is the entire execution of the program YK>> and its stored YK>> value is initialized only once, prior to program startup.

üÔÏ × ó

HZ> äÁ.

HZ> 6.7.4

HZ> The zero-initialization (8.5) of all local objects with static storage HZ> duration (3.7.1) is performed before any other initialization takes HZ> place. A local object of POD type (3.9) with static storage duration HZ> initialized with constant-expressions is initialized before its block is HZ> first entered. An implementation is permitted to perform early HZ> initialization of other local objects with static storage duration under HZ> the same conditions that an implementation is permitted to statically HZ> initialize an object with static storage duration in namespace scope HZ> (3.6.2). Otherwise such an object is initialized the first time control HZ> passes through its declaration; such an object is considered initialized HZ> upon the completion of its initialization.

üÔÏ × ó++

"ðÒÏÓ×ÅÝÅÎÉÅ ×ÎÅÄÒÑÔØ Ó ÕÍÅÒÅÎÎÏÓÔØÀ, ÐÏ ×ÏÚÍÏÖÎÏÓÔÉ ÉÚÂÅÇÁÑ ËÒÏ×ÏÐÒÏÌÉÔÉÑ."

Thu, 30 Mar 2006 18:53:36 +0400 Yuriy K wrote to Harry Zhurov:

[...]

YK>>> and its stored YK>>> value is initialized only once, prior to program startup.

YK> üÔÏ × ó

[...]

HZ>> passes through its declaration; such an object is considered initialized HZ>> upon the completion of its initialization.

YK> üÔÏ × ó++

ï, Á Ñ É ÎÅ ÚÎÁÌ...
íÅÄÂpÁÔØÑ ÐÏ pÁÚyÍy ÖÄyÔ ÷ÁÓ × ÄÁÌÅËÉÈ ÍÉpÁÈ, Harry... þÅÔ×ÅpÇ íÁpÔ 30 2006 08:21, Harry Zhurov wrote to Michael Mamaev:

HZ>>> üÔÏ ÇÌÏÂÁÌØÎÙÅ ÓÔÁÔÉÞÅÓËÉÅ. á ÌÏËÁÌØÎÙÅ (ÄÌÑ ÆyÎËÃÉÉ) HZ>>> ÓÔÁÔÉÞÅÓËÉÅ ×ÐÏÌÎÅ ÉÍÅÀÔ ÐpÁ×Ï ÉÎÉÔÉÔØÓÑ ÎÅ ÄÏ ×ÈÏÄÁ × main, Á ÐpÉ HZ>>> ÐÅp×ÏÍ ×ÙÚÏ×Å ÆyÎËÃÉÉ. MM>> ÷Ï-ÐÅp×ÙÈ, ËÁË ÔÙ ÓÅÂÅ ÜÔÏ ÐpÅÄÓÔÁ×ÌÑÅÛØ ÎÁ ypÏ×ÎÅ ÁÓÍÁ? :) HZ> ðpÉÞÅÍ ÚÄÅÓØ ÁÓÍ? åÓÌÉ ÔÙ ÐpÏ pÅÁÌÉÚÁÃÉÀ, ÔÏ ÄÅÌÁÅÔÓÑ ÜÔÏ ×ÐÏÌÎÅ HZ> ÜÌÅÍÅÎÔÁpÎÏ, ÈÏÔÑ ÎÁËÌÁÄÎÙÅ pÁÓÈÏÄÙ ÍÏÇyÔ ÂÙÔØ ÂÏÌØÛÅ. äÅÌÁÅÔÓÑ, ÎÏ ÚÁÞÅÍ? òÁÓÈÏÄÙ ÂÏÌØÛÅ, Á ÐpÅÉÍyÝÅÓÔ× ÎÉËÁËÉÈ.

MM>> ÷Ï-×ÔÏpÙÈ, ÐpÏÝÅ É ÄÅÛÅ×ÌÅ ÐpÏÉÎÉÔÉÔØ ÐÅpÅÍÅÎÎyÀ ÅÝÅ ÎÁ ÓÔÁÄÉÉ MM>> ËÏÍÐÉÌÑÃÉÉ, ÂÌÁÇÏ ÌÅÖÉÔ ÏÎÁ × ÓÅÇÍÅÎÔÅ ÄÁÎÎÙÈ, ÚÁÔpÁÔÙ ÐpÁËÔÉÞÅÓËÉ MM>> ÎyÌÅ×ÙÅ. HZ> ëÁË ÜÔÏ ÔÙ ÓÏÂpÁÌÓÑ ÉÎÉÔÉÔØ ÎÁ ÓÔÁÄÉÉ ËÏÍÐÉÌÑÃÉÉ? ìÅÇËÏ. ëÏÍÐÉÌÑÔÏp ÓÏÚÄÁÅÔ ÐÅpÅÍÅÎÎyÀ × ÓÅÇÍÅÎÔÅ ÄÁÎÎÙÈ É ÉÎÉÃÉÁÌÉÚÉpyÅÔ ÅÅ.

HZ> ÷ÓÅ ÉÎÉÔÉÔÓÑ ÎÁ pÁÎÔÁÊÍÅ, × ËpÁÊÎÅÍ ÓÌyÞÁÅ - × ÚÁÇpyÖÁÅÍÙÈ ÐpÏÃÁÈ HZ> (Ô.Å. ÇÄÅ ÐpÏÇpÁÍÍÁ ÐÅpÅÄ ×ÙÐÏÌÎÅÎÉÅÍ ÚÁÇpyÖÁÅÔÓÑ × ïúõ), - ÎÁ ÜÔÁÐÅ HZ> ÚÁÇpyÚËÉ. üÔÏ ÔÏÖÅ Ó×ÏÅÇÏ pÏÄÁ pÁÎÔÁÊÍ, yÖ ÎÉËÁË ÎÅ ÓÔÁÄÉÑ HZ> ËÏÍÐÉÌÑÃÉÉ. òÁÎÔÁÊÍÁ ×ÏÏÂÝÅ ÍÏÖÅÔ ÎÅ ÂÙÔØ, É Ë ÑÚÙËy ÏÎ ÏÔÎÏÛÅÎÉÑ ÎÅ ÉÍÅÅÔ.

íÁÊËÌ

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required