[so] [Tech Q] scope & linkage
Vlad Dogaru
ddvlad at rosedu.org
Mon Feb 21 23:12:52 EET 2011
On 2/21/2011 10:52 PM, Daniel Baluta wrote:
>>> int f(int a, int b)
>>> {
>>> int prod;
>>> static int sum;
>>>
>>> ...
>> Ambele au "block scope" sau "function scope" (despre care vorbea si
>> Catalin), doar ca prod se aloca pe stiva, iar sum pe heap, tocmai pentru a
>> evita pop-ul facut stivei la iesirea din functie si pentru a pastra valorile
>> intre apeluri.
>
> Ai dreptate pentru prod.
Actually, eu am fost surprins să aflu următorul lucru: în standardul
C89[5] nu apare nici măcar o singură dată cuvântul "stack". Variabilele
ca 'prod' au storage class /automatic/ (asociat cu cuvântul cheie
'auto'). Iată ce spune standardul, în secțiunea 2.1.2.3:
An instance of each object with automatic storage duration is
associated with each entry into a block. Such an object exists and
retains its last-stored value during the execution of the block and
while the block is suspended (by a call of a function or receipt of a
signal).
[5] http://flash-gordon.me.uk/ansi.c.txt (E un draft, mi-e lene să caut
varianta oficială).
Vlad
More information about the so
mailing list