OVH Cloud OVH Cloud

terminologie : encore une question

18 réponses
Avatar
Zouplaz
Bonjour, une fonction déclarée dans un fichier .h c'est :

- une déclaration de fonction
ou
- un prototype de fonction

De plus, peut-on dire que l'ensemble des fonctions déclarées dans le .h
sont "publiques" (c'est à dire connues donc utilisables par les autres
modules de l'application) ?

Merci

8 réponses

1 2
Avatar
Antoine Leca
En , Horst Kraemer va escriure:
Un prototype de fonction est une déclaration de fonction
qui déclare les types des paramètres.


Heu, pas exactement.

Un prototype, c'est la forme d'un déclarateur de fonction qui inclut la
déclaration des paramètres. Elle peut être utilisée autant pour une
déclaration (qui alors ne comptera que cela) que pour une définition (et à
ce moment elle sera suivie d'un corps).

La forme « qui n'est pas un prototype » (elle n'a pas d'autre nom) a deux
sous-formes:
- celle qui ne dit rien f(), qui peut intervenir comme déclaration (et ne
donne aucune indication) ou au début d'une définition, et à ce moment
indique une fonction sans paramètre, c'est équivalent à f(void) { /*...*/ }
- celle qui dit quelque chose (informellement appelée « ancienne manière »)
ne peut intervenir que dans une définition


Pour bien montrer la différence, de son côté, une déclaration de fonction,
cela... déclare UNE fonction (c'est un déclarateur; désolé pour la
tautologie). Tandis qu'un prototype peut intervenir comme déclaration de
type, ou comme partie d'un prototype plus complexe (cf. qsort).


Antoine

Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Nicolas Aunai wrote:

tu es d'une incroyable rigueur dans tes codes... ça te dirais pas
d'enseigner le C à la fac ?


Ca me titille, mais je ne sais pas trop comment faire... Faut des tas de
diplômes non.

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?lib=cpp
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/

Avatar
Marc Boyer
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Nicolas Aunai wrote:

tu es d'une incroyable rigueur dans tes codes... ça te dirais pas
d'enseigner le C à la fac ?


Ca me titille, mais je ne sais pas trop comment faire... Faut des tas de
diplômes non.


Ca dépend avec quel statut.
Pour devenir enseignant (chercheur). plein temps, en effet,
faut une thèse (ou une agrégation).
Pour intervenir comme vacataire, c'est un peu plus flou
pour moi. Je pense qu'un peu n'importe qui peut.
Il existe aussi des postes de PAST (Professeur Associé à
Temps Partiel) qui sont des CDD 3 ans à mi-temps.

Si ça fait plus que te titiller, contacte les chefs
de département informatique des universités de ton
environnement.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(


Avatar
Horst Kraemer
On Mon, 1 Mar 2004 20:17:41 +0100, "Antoine Leca"
wrote:

En , Horst Kraemer va escriure:
Un prototype de fonction est une déclaration de fonction
qui déclare les types des paramètres.


Heu, pas exactement.



La norme n'est pas exacte ?

6.2.1, 1

(A function
prototype is a declaration of a function that declares the types of
its parameters.)

J'ai traduit mal ?

--
Horst


Avatar
Antoine Leca
En , Horst Kraemer va escriure:
On Mon, 1 Mar 2004 20:17:41 +0100, "Antoine Leca"
wrote:

En , Horst Kraemer va
escriure:
Un prototype de fonction est une déclaration de fonction
qui déclare les types des paramètres.


Heu, pas exactement.


La norme n'est pas exacte ?


;-) J'étais sûr en écrivant cela hier soir que tu me répondrais quelcue
chose comme cela.

6.2.1, 1


La citation correcte est 6.2.1p2 (pour C99).

Bon, j'ai donc passer plusieurs minutes pour relire tout ce qui parle de ce
sujet.

L'index donne comme « définition » de prototype (de fonction) cette
référence et 6.7.5.3. Mais cette dernière clause n'aide pas. Le reste du
texte présente des variations: on trouve en particulier « type incluant un
prototype » (6.5.2.2, 7.1.2), ou par antonomie "not prototype-format
parameter type declarators", que je peux pas traduire en français.
Mais ta version est citée dans ce qui est donné comme définition, et la même
interprétation est confirmée dans 6.9.1p7. Je te donne donc acte (le seul
point de traduction, mais c'est vraiment mineur, c'est que

a declaration of a function


n'utilise pas un génitif (function declaration), comme c'est la règle
ailleurs; on devrait donc écrire « déclaration d'une fonction »; c'est du
pinaillage, bien sûr).


Cela étant, et c'était ce que je voulais dire, la notion de prototype
représente plus qu'une déclaration, c'est aussi une forme visuelle, une
convention d'écriture, comme dans l'expression « type incluant un
prototype ». Et c'est de cela, et non de la défintion au sens strict, dont
je voulais parler hier soir.

Désolé de ne pas avoir été limpide (surtout que je savais que le terrain
était glissant), et désolé surtout si j'ai pu faire croire à Horst qu'il
s'était trompé.


Antoine



Avatar
Nicolas Aunai
Emmanuel Delahaye avait écrit le 01/03/2004 :


Ca me titille, mais je ne sais pas trop comment faire... Faut des tas de
diplômes non.


je sais pas trop au juste, et comme dit Marc, ça dépend du post. Tout
ce que je sais, c'est que ça ferait certainement du bien...

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Nicolas Aunai
Yves Kuhry a utilisé son clavier pour écrire :


- M'sieu, j'peux aller faire pipi ?
- Quelle est ta question sur le langage C ?
;-)


lol !!

--
Nico,
http://astrosurf.com/nicoastro
messenger :

Avatar
Yves Kuhry
Nicolas Aunai wrote:

Emmanuel Delahaye avait écrit le 01/03/2004 :


Ca me titille, mais je ne sais pas trop comment faire... Faut des tas de
diplômes non.


je sais pas trop au juste, et comme dit Marc, ça dépend du post. Tout
ce que je sais, c'est que ça ferait certainement du bien...

Ca dépend


- M'sieu, j'peux aller faire pipi ?
- Quelle est ta question sur le langage C ?
;-)


1 2