Aller au contenu


Photo
- - - - -

void setup(void) ???


  • Veuillez vous connecter pour répondre
6 réponses à ce sujet

#1 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 17 novembre 2011 - 01:49

Bonjour,

Comme à mon habitude, me revoici avec une nouvelle question très...CCMB.....Mais bon, après avoir cherché (mal apparemment) sur le Net et ne trouvant pas de réponse, je me tourne vers vous pour vous demander :

Mais !!?? Qu'est ce que signifie le void entre parenthèse dans : void setup(void) ou void loop(void), sous Arduino ou autre d'ailleurs?

En espérant ne pas vous faire mourir de rire.....

Désolé.

Et sinon, merci par avance à tous ceux qui prendrons le temps de répondre à ma question.

Cordialement.

#2 Jbot

Jbot

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 801 messages
  • Gender:Male
  • Location:Paris

Posté 17 novembre 2011 - 02:12

Cela veut dire que tu n'as pas de parametre a mettre dans la fonction. (void = vide)


Malédiction du Créatif :
Plus vous avez d’idées et moins vous arrivez à les structurer.


#3 thorium90

thorium90

    Membre

  • Membres
  • 20 messages
  • Gender:Male
  • Location:Lyon

Posté 17 novembre 2011 - 02:32

Je tiens a ajouter un autre éléments de réponse m’étant cassé les dents dessus,

Vous codez votre propre objet, mettons la class RobotMaker.
Lorsque vous allez le déclarer dans votre sketch si le constructeur de votre objet n'atend aucun parametre, vous avez le choix lors de la déclaration entre :

RobotMaker(void) monObjet;

ou

RobotMaker monObjet;

Car si vous faites :

RobotMaker() monObjet;  //Plantage !

Fin de la petite aparté :)

++
Website : | Python | Arduino | Android | www.siliciumcorp.com
MyPastebin : Tous mes codes sources pastebin.com/u/thorium90

#4 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 17 novembre 2011 - 04:10

Ha! Et bien merci je me coucherais moins bête ce soir.

Mais alors quelle est l'utilité de mettre quelque chose? Car par rapport à Void loop()......il doit bien exister une différence, pourrait t'on passer un argument à la boucle LOOP?

Quoi qu'il en soit merci pour vos réponses.

Cordialement.

#5 thorium90

thorium90

    Membre

  • Membres
  • 20 messages
  • Gender:Male
  • Location:Lyon

Posté 17 novembre 2011 - 05:59

L'utilité... hum mieux instruire le compilateur, c'est tout ! :) En fait le void ou équivalent dans d'autre langage, n'est obligatoire que si le compilateur n'a pas été munit de la compréhension de l'absence de ce motif. Dans certains langages cela pourra même vouloir dire autre chose, tout est question de compilation (traduction du code source en instructions machine exécutable par le processeur)

Pour pouvoir passer un paramètre dans la fonction loop() il faudra que tu ailles modifier son appel dans le firmware Arduino puisque lui seul y fait appel ^^

En faisant l'analogie avec le C et une fonction Main type :

int main (int argc, char *argv[])
{
  //Bla bla
}

Le seul moyen ici de faire passer des paramètres dans ce programme en C et de faire directement appel à lui depuis le système et lui passer une chaîne de caractère en paramètre; aucune fonction à l'intérieur du programme ne pourrai y faire appel.

En espérant que je ne t'ai pas perdu dans les explications ^^

++
Website : | Python | Arduino | Android | www.siliciumcorp.com
MyPastebin : Tous mes codes sources pastebin.com/u/thorium90

#6 Black Templar

Black Templar

    Membre

  • Membres
  • PipPipPipPipPip
  • 1 430 messages
  • Gender:Male
  • Location:Lille

Posté 17 novembre 2011 - 06:45

Mais alors quelle est l'utilité de mettre quelque chose? Car par rapport à Void loop().....


L'utilité de mettre un void, c'est de respecter les normes C (quoiqu'en Arduino, on code en C++ et je ne connais pas les normes C++...).

La différence est que lorsque tu déclares void loop(), c'est une déclaration non prototypé alors que void loop(void) est une déclaration sous la forme prototypé (standard C99).
De plus, écrire void loop(void), c'est dire explicitement au compilateur que la fonction loop ne prend pas de paramètre.
Alors qu'avec void loop(), la fonction loop peut prendre un nombre inconnu d'arguments...

Concrètement, ça ne change rien d'utiliser l'une ou l'autre écriture (même si c'est bien de prendre le réflexe de mettre un void quand il n'y a pas d'arguments)

++
Black Templar

Mon site internet : http://ferdinandpiette.com/


#7 Telson

Telson

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 975 messages
  • Gender:Male
  • Location:Punaauai - Tahiti

Posté 18 novembre 2011 - 09:08

Merci beaucoup pour m'avoir apporté autant de réponse à ma question.

Vos explications sont très intéressantes et me permettent d'avoir une vue plus claire sur la programmation.




0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users