[so] [Tech Q] scope & linkage

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Tue Feb 22 01:14:06 EET 2011


On 02/22/2011 12:56 AM, Catalin Nicutar wrote:
> 2011/2/22 Razvan Deaconescu <razvan.deaconescu at cs.pub.ro>:
>> 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)
> 
> Sper sa nu gresesc.
> 
> O variabila statica ramane prezenta undeva in memorie si dupa
> ce s-a incheiat apelul functiei si nu isi pierde valoarea.
> Cealalta variabila e numita "automatic variable" pentru ca i se
> va aloca storage in mod automat (pe stiva in mod uzual dar nu
> cred ca spune standardul ceva).
> 
> "This means that internal static variables provide private,
> permanent storage within a single function".

Cam da. Criterul se cheamă "storage duration"/"storage class", iar
auto/register/static/extern sunt numiți "storage duration specifiers"[1].

Detalii bine explicate (consider eu) despre aceste aspecte găsiți în
cartea "C in a Nutshell"[2] (secțiunea 1.6.2 și întreg capitolul 11). O
găsiți în documentație[3] (c-selection). Recomand în mod deosebit
parcurgerea secțiunii 11.1.2 în care se specifică faptul că linkage se
referă la identificatori iar storage class la obiecte.

Răzvan

[1] http://en.wikipedia.org/wiki/C_syntax#Storage_duration_specifiers
[2] http://oreilly.com/catalog/9780596006976
[3] http://elf.cs.pub.ro/so/res/doc/


More information about the so mailing list