IDE pour langage C, pré-processeur intégré
Fermé
Shinjitm
Messages postés
13
Date d'inscription
vendredi 13 février 2009
Statut
Membre
Dernière intervention
9 novembre 2011
-
20 nov. 2009 à 14:31
Emmanuel Delahaye Messages postés 107 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 juillet 2019 - 29 nov. 2009 à 15:19
Emmanuel Delahaye Messages postés 107 Date d'inscription jeudi 18 juin 2009 Statut Membre Dernière intervention 17 juillet 2019 - 29 nov. 2009 à 15:19
A voir également:
- IDE pour langage C, pré-processeur intégré
- Temperature processeur - Guide
- Vitesse processeur - Guide
- Langage ascii - Guide
- Achat integre - Guide
- Langage binaire - Guide
6 réponses
Emmanuel Delahaye
Messages postés
107
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
17 juillet 2019
7
20 nov. 2009 à 16:17
20 nov. 2009 à 16:17
C'est pas normal que ce soit autant le bazar. Une meilleure organisation du code s'impose. La portabilité se résout occasionnellement par le préprocesseur, mais on se limite plutôt aux headers. En principe, on écrit plutôt des bibliothèques spécialisées en fonction de la cible (mais qui ont toutes la même interface). La portabilité se fait alors en liant la bonne bibliothèque au projet ...
Bref, je soupçonne une mauvaise organisation du développement...
Bref, je soupçonne une mauvaise organisation du développement...
DrCrow
Messages postés
387
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
20 août 2014
19
20 nov. 2009 à 14:59
20 nov. 2009 à 14:59
Pour les Pré-Processuer intégré, je coné pas, sinon ya code::block, et ofete , quec ki te dérange dans qulque ligne de code (headers + pré-procésseur), sa dérange pas a mon avis. :D
Shinjitm
Messages postés
13
Date d'inscription
vendredi 13 février 2009
Statut
Membre
Dernière intervention
9 novembre 2011
20 nov. 2009 à 16:17
20 nov. 2009 à 16:17
Au contraire, DrCrow, le code est difficilement lisible sans la fonction que je recherche.
Exemple de code :
Dur de s'y retrouver, donc ...
Exemple de code :
#ifdef CONFIG1 interrupt void maFonction(void) { acquitement1(); #endif #ifdef CONFIG2 void maFonction(void) { acquitement2(); #endif #ifdef CONFIG1 if(registre == 0) #endif #ifdef CONFIG2 if(etat == 0) #endif { actionPrincipale(); } #ifdef CONFIG1 else if(registre == 1) #endif #ifdef CONFIG2 if(etat == 1) #endif { uneFonction(); } else { } #ifdef CONFIG2 etat = (etat + 1) % 2; #endif #ifdef CONFIG1 compteur++; if(compteur==1000) { faireQuelqueChose(); compteur = 0; } #endif }
Dur de s'y retrouver, donc ...
Emmanuel Delahaye
Messages postés
107
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
17 juillet 2019
7
20 nov. 2009 à 16:21
20 nov. 2009 à 16:21
Exemple typique de code mal organisé. Il ne doit pas y avoir de compilation conditionnelle dans le code (la preuve, ça le rend illisible)... Il faut introduire un niveau d'abstraction supplémentaire :
Soit tu fais des macros que tu définies en fonction de la config, soit eut fais des fonctions que tu regroupes dans une bibliothèque par config.
Soit tu fais des macros que tu définies en fonction de la config, soit eut fais des fonctions que tu regroupes dans une bibliothèque par config.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Shinjitm
Messages postés
13
Date d'inscription
vendredi 13 février 2009
Statut
Membre
Dernière intervention
9 novembre 2011
20 nov. 2009 à 16:41
20 nov. 2009 à 16:41
Certes.
Je vais essayer de faire au mieux, mais ce n'est pas forcément facile. Le problème étant de tester le code dans une config non-temps réel avant de l'appliquer sur une config temps-réel. Pour que ça ai un sens, il est important de conserver, autant que possible, le même code dans les deux cas. Et s'il y a des copier-coller d'un fichier à l'autre, il y a 100% de chances que ça finisse mal (ce qui implique dans mon cas du hardware qui casse). D'où l'idée de mettre de la compilation conditionnelle là où c'est absolument indispensable, et de toucher le moins possible au "coeur" des fonctions.
Encore une fois, je vais essayer de faire au mieux ...
Je vais essayer de faire au mieux, mais ce n'est pas forcément facile. Le problème étant de tester le code dans une config non-temps réel avant de l'appliquer sur une config temps-réel. Pour que ça ai un sens, il est important de conserver, autant que possible, le même code dans les deux cas. Et s'il y a des copier-coller d'un fichier à l'autre, il y a 100% de chances que ça finisse mal (ce qui implique dans mon cas du hardware qui casse). D'où l'idée de mettre de la compilation conditionnelle là où c'est absolument indispensable, et de toucher le moins possible au "coeur" des fonctions.
Encore une fois, je vais essayer de faire au mieux ...
Emmanuel Delahaye
Messages postés
107
Date d'inscription
jeudi 18 juin 2009
Statut
Membre
Dernière intervention
17 juillet 2019
7
29 nov. 2009 à 15:19
29 nov. 2009 à 15:19
Il faut séparer les aspects 'algorithmes' qui ne dépendent pas de la machine des aspects E/S qui dépendent de la machine. Ce n'est pas particulièrement difficile et de toutes façons, c'est la méthode reconnue et pratiqué qui permet, par exemple, à Java de s'exécuter sur n'importe quelle machine, ou d'utiliser GTK+ sous WIndows ou Linux quasiment indifféremment ...