[so] [Tech Q] scope & linkage

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Tue Feb 22 00:45:04 EET 2011


On 02/21/2011 10:43 PM, Alexandru Damian wrote:
> 2011/2/21 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>
>> Altul: Fie următoarele
>>
>> extern int b; /* global variable */
>> static int c;
>>
>> b referă un external object, are "external linkage", "file scope".
>> c referă un external object, are "internal linkage", "file scope".
>>
>> În cazul
>>
>> int f(int a, int b)
>> {
>>    int prod;
>>    static int sum;
>>
>>    ...
>> }
>>
>> Ce se poate spune despre prod și sum? Cu ce diferă cele două din
>> perspectiva unor terminologii legate de limbajul C? (precum identifier
>> scope, identifier linkage)
>>
> 
> 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.

Faptul că se alocă una undeva sau alta altundeva este mai degrabă o
specificitatea a sistemului de operare, nu a limbajului (după cum spunea
și Vlad), dar are legătură cu răspunsul.

Deci, care este criteriul de clasificare conform căruia cei doi
identificatori sunt diferiți? Think static & auto. (este destul de
punctuală întrebarea, dar nu pot da înapoi acum :-P)

Răzvan


More information about the so mailing list