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) ?
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
En 96o64050ovt48c2rd4e5ofolo9n07mk19g@4ax.com, 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).
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
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/
In 'fr.comp.lang.c', Nicolas Aunai <nicolas.aunai@free.fr> 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- emdelYOURBRA@noos.fr [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/
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/
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 :-(
Emmanuel Delahaye wrote:
In 'fr.comp.lang.c', Nicolas Aunai <nicolas.aunai@free.fr> 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 :-(
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 :-(
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
On Mon, 1 Mar 2004 20:17:41 +0100, "Antoine Leca" <root@localhost.gov>
wrote:
En 96o64050ovt48c2rd4e5ofolo9n07mk19g@4ax.com, 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.)
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
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
En jik84019stht4ifmjshcbqb72uqs2t3sb2@4ax.com, Horst Kraemer va escriure:
On Mon, 1 Mar 2004 20:17:41 +0100, "Antoine Leca" <root@localhost.gov>
wrote:
En 96o64050ovt48c2rd4e5ofolo9n07mk19g@4ax.com, 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é.
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
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...