2011-05-19 6 views
3

Possible en double:
what is a “private header” in cque sont les fichiers * .r en C?

Je me réfère à cette question:

Can you write object-oriented code in C?

La réponse acceptée à cette question posté un lien vers un livre: http://www.cs.rit.edu/~ats/books/ooc.pdf

Dans ce livre, l'auteur utilise des fichiers * .r, en plus des fichiers * .c et * .h. Les fichiers * .r sont utilisés comme des en-têtes, masquant l'implémentation de "C-classes" des utilisateurs

Ma question est qu'est-ce que les fichiers * .r?

sont-ils quelque chose de standard pour le codage en C?

Ou est-ce quelque chose qu'Axel Schreiner a inventé en écrivant son livre?

+2

Ce n'est certainement pas une extension de fichier C normale. – nmichaels

+1

Cela peut y répondre pour vous: http://stackoverflow.com/questions/958671/what-is-a-private-header-in-c – Bart

Répondre

3

J'ai eu un coup d'œil sur le PDF, et est ici un exemple de ce que vous faites référence:

La classe Description du type struct dans new.r doit correspondre à la méthode déclarations en new.h:


struct Class { 
    size_t size; 
    void * (* ctor) (void * self, va_list * app); 
    void * (* dtor) (void * self); 
    void (* draw) (const void * self); 
}; 

.r fait référence à la représentation (d'où le .r) de la soi-disant classe, où le fichier d'en-tête définit en fait les noms de méthode ressemble de plus amicales:

void * new (const void * class, ...); 
void delete (void * item); 
void draw (const void * self); 

Et enfin le fichier source c contient le code de fonction réelle:

void draw (const void * self) 
{ 
    const struct Class * const * cp = self; 
    assert(self && * cp && (* cp) —> draw); 
    (* cp) —> draw(self); 
} 

longue histoire Bref, oui, le .r était quelque chose qu'Axel Schreiner avait inventé dans son livre, et comme mentionné précédemment, le r .r est "représentation".

3

Il les appelle * r * fichiers de présentation et d'où l'extension .r. Il pourrait aussi bien être .p ou .q. C'est juste une convention personnelle utilisée par l'auteur.