Question

PUBLIC void main

Ceci provient de Kernel.c de Minix Source. Quelle est la signification du public dans ce cas?

Était-ce utile?

La solution

C'est probablement défini comme ceci:

#define PUBLIC extern
#define PRIVATE static

Ooops, je regardais juste dans ma copie de Tanenbaum. Il est défini comme:

#define PUBLIC

c'est-à-dire que rien. C'est tout simplement un peu de "auto-documentation". Le privé est défini comme je l'ai dit à l'origine. Vous pouvez les trouver dans le fichier source Minix const.h.

Autres conseils

Cité de Tanenbaum le livre de minix conception de systèmes d'exploitation et de mise en œuvre troisième édition Page 140 Paragraphe 3

Le privé est défini comme un synonyme de statique. Les procédures et les données qui ne sont pas référencées en dehors du fichier dans lesquelles elles sont déclarées sont toujours déclarées privées pour empêcher leur nom d'être visible en dehors du fichier dans lequel ils sont déclarés. En règle générale, toutes les variables et procédures doivent être déclarées avec la portée locale, si possible. Le public est défini comme la chaîne nulle. Un exemple de Kernel / Proc.c peut aider à le rendre clair. La déclaration

Public void Lock_dequeue (RP)

sort du préprocesseur C comme

void Lock_dequeue (RP)

static Les variables globales ont une portée de fichier. Donc, si vous définissez une variable globale ou rendez une fonction statique, celles-ci ne seront visibles que dans ce fichier. C'est-à-dire que vous ne pourrez accéder qu'à ceux du code qui se trouve dans ce fichier, dans un environnement multi-fichiers.

extern Les globaux sont visibles / accessibles à partir de l'extérieur du fichier. Pour les définitions de fonction extern est facultatif car ils sont visibles de l'extérieur de la portée du fichier par défaut.

Hachage définissant ces choses à PRIVATE et PUBLIC ne sont rien d'autre que l'ajout d'une couche d'abstraction pour une meilleure interprétation et une meilleure compréhension de ce qui est réellement destiné. Comme dans la conception OOP, le privé et le public ont les interprétations, l'ajout des mêmes noms indiquent quelles propriétés ont-elles.

Je suppose qu'il sera remplacé par le préprocesseur à un peu plus C comme (ou à la chaîne vide).

Essayez de rechercher après #define avec PUBLIC

Le mot public implique qu'il marque la méthode dans le cadre de «l'interface publique» de l'unité de compilation, c'est-à-dire qu'il s'agit d'une méthode qui peut être appelée depuis l'extérieur du fichier source actuel. (Ce n'est qu'une supposition éclairée). Comme d'autres l'ont souligné, le public est presque certainement une macro préprocesseur qui s'étend à un ensemble de mots clés / attributs appropriés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top