appel d'une fonction dans c

Messages : 0

Inscription : 24 janv. 2016 20:20

Profil de l'utilisateur : Élève de lycée

appel d'une fonction dans c

Message par GaussX » 05 mars 2019 23:36

Bonjour, on définit la fonction Inside telle :
j'essaie d'appeler cette fonction en écrivant inside(*pos,{ 0, 0 } , dim) mais on me déclare comme erreur few arguments
et j'essaie de l'appeler de cette manière
struct position_t origin;
origin.x=0;
origin.y=0;
(inside(*pos,origin , dim) -en définissant au préalable origin- et je n'obtiens pas cette erreur , pouvez-vous m'indiquez où est l'erreur ?

Messages : 2512

Inscription : 27 juil. 2016 19:38

Profil de l'utilisateur : Élève de lycée

Re: appel d'une fonction (langage C)

Message par U46406 » 07 mars 2019 18:24

Quelle est la syntaxe de cette fonction Inside
d'après la documentation dans le manuel de la bibliothèque ?

ça fait des années que je n'ai pas fait de C ,
c'est quelle sorte d'écriture les crochets : { , } ?
« Occupez-vous d’abord des choses qui sont à portée de main. Rangez votre chambre avant de sauver le monde. Ensuite, sauvez le monde. » (Ron Padgett, dans Comment devenir parfait) :mrgreen:

Messages : 0

Inscription : 13 févr. 2018 09:22

Profil de l'utilisateur : Élève de lycée

Re: appel d'une fonction (langage C)

Message par matmeca_mcf1 » 07 mars 2019 18:48

U46406 a écrit :
07 mars 2019 18:24
c'est quelle sorte d'écriture les crochets : { , } ?
C'est des accolades. Il s'agit de listes d'initialisation. On peut les utiliser en C pour initialiser des tableaux. Ils peuvent être utilisés en C++ (depuis le C++2011) pour initialiser des structures. http://www.cplusplus.com/reference/init ... izer_list/ De mémoire, le constructeurs prenant une liste d'initialization en argument est construit par défaut pour les structures suffisamment simples (je crois celles qu'on appelle "plain old data" mais je dois regarder les détails). https://en.cppreference.com/w/cpp/langu ... lizer_list

Les initializers lists existent en fait aussi en C (même en C90) pour les structures. Cependant, contrairement au C++, il n'y a pas en C de conversion implicite qui permettent de passer d'une liste d'initialisation à une structure. Ils ne peuvent être utilisés en C que lors de la déclaration d'une variable pour l'initialiser. Depuis le C99, vous pouvez faire cet appel explicite avec des "compound litterals". Essayez ceci:
$$
\texttt{inside(*pos,(struct position_t) {0,0}, dim);}
$$

Depuis le C99, il y a aussi ceci http://www.lysator.liu.se/c/designated- ... izers.html

Pour l'OP, pourquoi ne posez-vous pas cette question à vos professeurs?

EDIT 1 et 2: C14 -> C99 Correction inexactitudes sur l'existence des initializer lists en C. Ajout compound litterals.
EDIT 3: Ajout exemple.
Dernière modification par matmeca_mcf1 le 07 mars 2019 21:04, modifié 3 fois.
Ancien ENS Cachan (maths) 1999--2003
Enseignant-Chercheur à l'Enseirb-Matmeca (Bordeaux INP) filière matmeca
Les opinions exprimées ci-dessus sont miennes et ne reflètent pas la position officielle de l'école dans laquelle j'enseigne.

Messages : 2512

Inscription : 27 juil. 2016 19:38

Profil de l'utilisateur : Élève de lycée

Re: appel d'une fonction dans c

Message par U46406 » 07 mars 2019 20:23

Il ne peut pas trop poser la question à ses profs, car il aime le risque et il essaie d'étudier en candidat libre : http://forum.prepas.org/viewtopic.php?f=18&t=68543
« Occupez-vous d’abord des choses qui sont à portée de main. Rangez votre chambre avant de sauver le monde. Ensuite, sauvez le monde. » (Ron Padgett, dans Comment devenir parfait) :mrgreen:

Répondre