appel d'une fonction dans c

Modérateur : Michel Quercia

Répondre
GaussX
Messages : 285
Enregistré le : dim. janv. 24, 2016 9:20 pm

appel d'une fonction dans c

Message par GaussX » mer. mars 06, 2019 12:36 am

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 ?

Avatar du membre
U46406
Messages : 8855
Enregistré le : mer. juil. 27, 2016 7:38 pm
Classe : shadow CCO nobo CMT
Contact :

Re: appel d'une fonction (langage C)

Message par U46406 » jeu. mars 07, 2019 7:24 pm

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:

matmeca_mcf1
Messages : 1537
Enregistré le : mar. févr. 13, 2018 10:22 am

Re: appel d'une fonction (langage C)

Message par matmeca_mcf1 » jeu. mars 07, 2019 7:48 pm

U46406 a écrit :
jeu. mars 07, 2019 7:24 pm
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.
Modifié en dernier par matmeca_mcf1 le jeu. mars 07, 2019 10:04 pm, modifié 3 fois.
Ancien ENS Cachan (maths) 1999--2003
Enseignant-Chercheur à l'Enseirb-Matmeca (Bordeaux INP)
Les opinions exprimées ci-dessus sont miennes et ne reflètent pas la position officielle de l'école dans laquelle j'enseigne.

Avatar du membre
U46406
Messages : 8855
Enregistré le : mer. juil. 27, 2016 7:38 pm
Classe : shadow CCO nobo CMT
Contact :

Re: appel d'une fonction dans c

Message par U46406 » jeu. mars 07, 2019 9:23 pm

Il ne peut pas trop poser la question à ses profs, car il aime le risque et il essaie d'étudier en candidat libre : 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

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 4 invités