Go Down

Topic: [Résolu] Librairie maison (Read 3 times) previous topic - next topic

Super_Cinci

Super analyse Barbu!

Je regarde ce que tu as fait, et je vais voir pour KB_NOKEY, car je suis sous l'IDE22 (pas le courage de me mettre encore à la 1.0... Mais je pense que ça passera. (il va falloir que je mette en majuscule tous mes define (y'en a plein d'autres que j'ai pas mis pour ne pas alourdir mon post)? ou c'est juste une spécificité du 1.0? j'aime pas trop les majuscules en prog, je trouve que ça surcharge un peu trop...

A tout'!

barbudor

C'est pas obligatoire, c'est un standard.

Il existe de nombreux standards de règle de codages.
Les règles de codages servent à ce que l'on identifie au 1er coup d'oeil les éléments. Suivants les règles on va pouvoir distinguer par exemple les variables globales des variables locales et des paramètres de fonctions. Distinguer les noms de types des noms de variables ou de fonctions, ...
Il en existe des tas différentes.

Mais il y au moins une règle sur laquelle tout le monde s'accorde de le début : les constantes en #define sont en MAJUSCULES.

Suivre une règle de codage, c'est un bon principe. Ca donne de la rigueur à ton code et ca aide à la relecture et à la maintenance ultérieure.
C'est comme l'indentation.
Le compilateur il s'en contrefiche de l'indentation.
Mais si tu indentes correctement ton code, tu sauras mieux le relire et le maintenir
Idem avec les règles de codages.

Et quand tu partages ton code soit pour l'offrir à la communauté soit pour poser une question sur le forum, c'est comme un post : si c'est mal écrit, cela ne donne pas envie de le lire et d'y répondre.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

zoroastre

Yep!

Super fort Barbudor ;)

Il faudrait aussi rappeler les règles pour les #includes.

Les guillements pour les libs crées dans le répertoire courant.
Les crochets pour les libs standards.

@+

Zoroastre.
Veuillez indiquer [RESOLU] dans l'entête du titre en éditant votre premier message ;)

Super_Cinci

#13
Sep 08, 2012, 07:46 am Last Edit: Sep 08, 2012, 08:08 am by Super_Cinci Reason: 1
Salut à vous deux.

Il faut que je vous avoue que j'ai fait l'impasse complète en prog à l'école (quel con... mais ça ne m'a pas empêché d'avoir mon BTS électro haut la main, car à l'époque en 95, la micro n'était pas trop importante). Je suis donc totalement autodidacte en prog. Je pensais que le C++ était juste du C avec quelque fonctionnalités en plus plus (la notion de x++, ++x par exemple), et que les deux pouvaient marcher ensemble...

De plus, selon les langages, l'un est sensible à la casse, pas l'autre, etc etc... et pour ce qui est des règles de de codage, je me contente juste de conserver des espacement de début de ligne dans les blocs pour retrouver facilement la fin du bloc, et j'ai tendance à nommer mes variables comme en basic (je crois) : "nom_de_la_variable" et non "nomDeLaVariable" comme il faudrait (je trouve la première forme plus lisible, c'est du perso)...

Pour revenir à ma lib maison, j'intègre les modifs et je teste ce matin même! Je suis sous IDE 0022, rappelons-le...

Merci encore à vous deux!

cinci

PS / EDIT :

Quote

In file included from C:\Program Files\arduino-0022\hardware\arduino\cores\arduino/WProgram.h:6,
                 from C:\Program Files\arduino-0022\libraries\MEGA_LCD_KB_debug\/MEGA_LCD_KB_debug.h:8,
                 from C:\Program Files\arduino-0022\libraries\MEGA_LCD_KB_debug\MEGA_LCD_KB_debug.c:26:
c:/program files/arduino-0022/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected identifier or '(' before 'double'
c:/program files/arduino-0022/hardware/tools/avr/lib/gcc/../../avr/include/math.h:439: error: expected ')' before '>=' token


j'ai mis tout le bloc ci-dessous du .c en commentaire, et ça a compilé.
Code: [Select]

#include "Arduino.h"

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "wiring.h"
#endif


et ça marche. Bon, faudrait un tuto un peu plus clair que ce qu'on trouve avec la lib Morse sur la façon de passer d'un prog à une lib, car j'aime pas trop ne pas comprendre ce que je fais, comme dans le cas présent. S'il le faut, je passerai au 1.0...

barbudor


Je pensais que le C++ était juste du C avec quelque fonctionnalités en plus plus (la notion de x++, ++x par exemple), et que les deux pouvaient marcher ensemble...

Oui et non.
Le C++ fait beaucoup plus que d'ajouter 2..3 fonctionnalités.  En tout pas cas celles que tu cite : ++x et x++ existent depuis le début en C.
Mais la surcharge de fonctions que j'ai expliqué est un ajout qui impose un traitement différent sur les noms de fonctions.
Cela n'empêche pas de mélanger les 2, ils restent totalement compatible et la plupart du temps c'est transparent.
En dehors de la programmation objet, des templates etc ... le C++ ajoute au C :
- la surcharge des fonctions et des opérateurs
- la possibilité de déclarer des variables locales n'importe où et pas seulement en début de block.

La plupart du temps, je code dans un fichier CPP pour bénéficier sans m'en rendre compte des ajouts du C++ même si je ne fais pas de classes ou autre fonctionnalités purement C++.

Quote
De plus, selon les langages, l'un est sensible à la casse, pas l'autre, etc etc...

Tat le C que le C++ sont sensibles à la casse.

Quote
j'ai tendance à nommer mes variables comme en basic (je crois) : "nom_de_la_variable" et non "nomDeLaVariable" comme il faudrait

Il n'y a pas de "comme il faudrait". Ta règle est tout a fait valable que ce soit en C ou en Basic de même que l'inverse.
A part les define en majuscules qui est une règle de fait, toutes les règles sont possibles. En avoir une c'est mieux que ne pas en avoir.

j'ai mis tout le bloc ci-dessous du .c en commentaire, et ça a compilé.
Code: [Select]

#include "Arduino.h"

#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "wiring.h"
#endif


Arduino.h ne devrait être présent qu'une fois? j'ai merdé.
Essaye en enlevant juste le 1er #include Arduino.h et en gardant ce qui est entre #if ... #endif

Ce n'est pas temps le problème de passer d'un programme à une lib (les Lib Arduino n'étant pas de vrai lib) que le problème de tous les changements entre la version 022 et la version 1.0.
Perso je ne vois aucune raison de rester dans une vielle version alors que plusieurs problèmes ont été corrigés dans la lib core Arduino dans la v1.0.
Il vaut mieux avoir la 1.0(.1) et  apprendre à migrer les exemples vers cette version plutôt que garder une version obsolète.
Barbuduino: Arduino sur Breadboard & VinciDuino: Clone Leonardo // WR703: Mini-routeur hacké // LauchPad MSP430 et Stellaris // Panda II Arduino-like .NetMF sous VisualC#
RTFC: Read That F.....g Code / RTFD: Read That F.....g Doc / RTFDS: Read That F.....g DataSheet / RTFS: Read That F.....g Schematic / Wot da ya wanna D.I.Y. today ?

Go Up