begin process at 2012 05 29 12:13:47
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Divers

 > 

Génération de nom de fonctions


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Génération de nom de fonctions

vendredi 9 septembre 2005 à 10:49:59 | Génération de nom de fonctions

buno

Administrateur CodeS-SourceS

Bijour les gens!

J'ai besoin votre avis sur le "problème" suivant:

Dans une fonction, on trouve ce morceau de code:
switch (mode)
{
  case 1: Save1bpp(); break;
  case 4: Save4bpp(); break;
  case 8: Save8bpp(); break;
 ...
}

Je me demandais si, par hasard, il n'y avait pas moyen (macro par exemple?) d'optimiser l'écriture pour avoir un code du genre: Save[valeur_de_mode]bpp() ?

Si oui, est-il préférable de le faire ou de le laisser tel quel du point de vue performance?

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

vendredi 9 septembre 2005 à 10:56:59 | Re : Génération de nom de fonctions

MoDDiB

Si tu fais ca assez souvent peut être qu'un tableau de pointeur sur fonctions sera suffisant
vendredi 9 septembre 2005 à 11:02:19 | Re : Génération de nom de fonctions

ymca2003

#define CASE_MACRO(val) \
   case val : Save##val##bpp(); break;

switch(mode)
{
  CASE_MACRO(1)
  CASE_MACRO(4)
  CASE_MACRO(8)
}

Mais bon je suis pas sur que ca arrange ton problème... Un tableau peut auusi être une solution mais comportera des trous apparemment.
vendredi 9 septembre 2005 à 11:22:39 | Re : Génération de nom de fonctions

buno

Administrateur CodeS-SourceS

ymca2003> Merci, c'est ce que je viens de tester:

void Save1(void)
{
  std::cout << "Save1" << std::endl;
}

void Save2(void)
{
  std::cout << "Save2" << std::endl;
}

#define SAVE(x) Save ## x

int main(int argc,char ** argv)
{
  SAVE(2)();  // Ok, ça marche: Save2()

  int mode=1;
  SAVE(mode)();  // AIE!! Savemode()

  system("pause");
  return 0;
}

Problème donc quand l'argument de SAVE n'est pas une constante...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...

vendredi 9 septembre 2005 à 11:29:26 | Re : Génération de nom de fonctions

ymca2003

Réponse acceptée !

Pour ce genre de truc un tableau est mieux. Les macros du genre que j'ai mis sont surtout utile quand un grand nombre de fonction ou autre ont un nom proche qui dépend d'un paramètre constant.

vendredi 9 septembre 2005 à 11:56:53 | Re : Génération de nom de fonctions

buno

Administrateur CodeS-SourceS
Mouais....m'arrange pas ça...
Sachant que, dans mon cas, la variable "mode" prend les valeurs suivantes: 1,4,8,16,24,32; soit mon tableau aura plein de trous (je pourrais utiliser une map ), soit il me faut trouver une projection de cette suite là sur celle des indices du tableau...

Je vais peut-être laisser comme ça alors...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
vendredi 9 septembre 2005 à 12:25:04 | Re : Génération de nom de fonctions

patatalo

Membre Club Administrateur CodeS-SourceS
salut,

si tu décale de 2 bits vers la droite tu obtient un tableau de 9 valeures.

1 -> 0
4 -> 1
8 -> 2
16 -> 4
24 ->6
32 ->8

@++


Cette discussion est classée dans : code, case, break, fonctions, génération


Répondre à ce message

Sujets en rapport avec ce message

Problème de GROS débutant : DeviceContext et dessin... [ par tempirate ] Je débute en visual c++ (amateurisme total) et j'ai commencé par faire un tout ptit logiciel de dessin..mais je n'arrive pas à trouver une fonction qu SFML problème de sprites [ par pop70 ] Bonsoir tout le monde, j'ai un problème avec la bibliothèque SFML : Je veux afficher des surfaces de 50px*50px tout les 50px (normal quoi). Le foncti Violation d'accès mémoire [ par zoneart ] Bonjour,Je suis débutant et j'ai écris deux trois lignes de codes que j'aimerais vous soumettre car une erreur de violation d'accès mémoire survient l logiciel Borland C++ et DevC++ [ par waldomania ] Bonjour, j'ai un grand problème car j'ai programmé un mini projet sur un Dev C++ mais ça marche pas à Borland C++ le projet est en langage c (!=C++) DATE MACHINE en C++ [ par eishtein ] bonjour tout la monde; pouvez vous m'aidez à optimiser la classe suivante de telle sorte à ce qu'elle nous donne la date courante: [code=cpp] class d Deplacement de plusieurs sprites à l'écran (SDL) [ par rasolofomanana ] Bonjour à tous, je débute en C et j'essaie de créer un programme où l'on peut déplacer plusieurs sprites à l'écran, par cases de 40px. Le problème es fonction switch et équivalent [ par gromhouleux ] Bonjour, en fait je cherche un équivalent à la fonction switch en C++. Je m'explique,Switch permet de faire une action en fonction d'une valeur entiè [OLE] Génération des msword.cpp et msword.h [ par cstriker ] Bonjour, Je dois améliorer un programme pour qu'il crée (ou modifie un template) un document word. J'ai donc suivi le tutorial donné par microsoft. STL : Comment afficher les élements dans un vector dans un endroit voulu [ par Razily ] Bonjour à tous ; je voudrai avoir de ce code un affichage de ce genre: [code=cpp] 1 a b c d e f g h 1 8 t c f d r f c t 8 7 p p p p p p p p 7 6 _ _ Mélanger code managé et non managé [ par fred_82 ] Bonjour,Je souhaiterais mélangé du code managé et du code non managé mais je n'y arrive pas.pour avoir un classe non managé, il suffit pourtant de cré


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,562 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales