Sto sviluppando in C da un po 'di tempo, provenendo da linguaggi orientati agli oggetti come C++ e Java, e mentre utilizzo le funzioni di libreria standard come fread()
e strtok()
, ho iniziato a chiedermi: come funzionano queste funzioni per la memorizzazione di variabili correlate al loro stato?In che modo le librerie C memorizzano le variabili di stato?
Ad esempio, si comporta in modo diverso per le chiamate successive e fread()
tiene traccia della propria posizione nel file. Queste informazioni devono essere archiviate da qualche parte e in un linguaggio orientato agli oggetti esistono costrutti di ambito come private
o protected
per proteggere questi valori da modifiche indesiderate, ma per quanto ho capito C non li ha.
Quindi, come vengono memorizzati in modo sicuro? Oppure sono globali e modificabili da qualsiasi luogo? La domanda è nata quando stavo scrivendo un file di intestazione con funzioni di utilità che avevano bisogno di memorizzare informazioni di stato simili. Qual è il modo "giusto" per fare questo genere di cose in C, e come viene gestito nelle librerie esistenti?
'fread' non ha bisogno di salvare lo stato tra le chiamate, visto che richiede una' struct file' che memorizza tutte le informazioni necessarie da 'fread'. –