[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