Pragma pour ignorer une fonction

Pragma pour ignorer une fonction - C++ - Programmation

Marsh Posté le 04-07-2008 à 13:04:14    

Salut,
 
Je cherche à paramétrer la prise en compte, ou non, par le compilateur, d'une fonction spécifique.
 
Par exemple, je voudrais lui dire de ne pas prendre en compte les instructions printf.
 
Est-ce possible, par exemple avec un pragma, ou autre ?
 
Si cela est possible, je voudrais même aller plus loin : dans un header .h, dans lequel je définierais donc les fonctions à ignorer, je voudrais carrément paramétrer dans quelque header il doit appliquer l'ignorance de la dite instruction.
Par exemple, je voudrais paramétrer dans un meme fichier ini.h (par exemple), les règles suivantes :
 
si header=classe1.h, ignorer fonction printf
si header=classe3.h, ignorer fonction printf
 
Merci de votre aide^^


Message édité par Elmoricq le 04-07-2008 à 13:22:59

---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 13:04:14   

Reply

Marsh Posté le 04-07-2008 à 13:22:49    

Je crains que tu ne croies au père noël. Mais je peux me tromper :D


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 04-07-2008 à 13:24:16    

À part avec des #define + #ifdef / #ifndef, je ne vois pas comment faire ça.
 
Mais avant tout, je m'interroge sur ton architecture : pourquoi diable aurais-tu besoin de faire une chose pareille ? [:pingouino dei]

Reply

Marsh Posté le 04-07-2008 à 13:30:11    

c'est une longue histoire ^^
 
en fait il me faudrait juste une instruction pour activer/desactiver la prise en compte d'une fonction. si ça existe, ça règlera mon problème


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 13:32:06    

Poste un exemple.

Reply

Marsh Posté le 04-07-2008 à 13:35:44    

fichier main_header.h :
 
#include header1.h
#include header2.h
#include header3.h
#include header4.h
#include header5.h
 
 
Et je voudrai faire en sorte qu'il ne prenne pas en compte les instruction printf dans le header3.h


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 13:37:44    

Je crois, sans toutefois en être tout à fair sûr, que j'ai un début de commencement d'une vague compréhension.
 
Dans le header3.h t'as des fonctions qui font des printf(). Qui sont utilisées ailleurs. Et là tu voudrais utiliser ces fonctions, mais sans les printf().
 
J'ai bon ?
 
(au passage : pourquoi des printf(), on n'est pas dans la sous-cat C++ [:pingouino dei])

Reply

Marsh Posté le 04-07-2008 à 13:40:49    

Oui voilà, c'est exactement ça, désolé de ne pas avoir été plus clair :(.
 
Pourquoi printf() ? des mauvaises habitudes du C lol, mais je veux bel et bien appliquer ce type de restriction à des classes et template.


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 13:46:24    

Vel-Ryphon a écrit :

Oui voilà, c'est exactement ça


 
Donc non, ce n'est pas possible à moins de changer toutes les fonctions définies dans header3.h pour faire, par exemple, ceci sur chaque printf :
#ifndef NO_PRINTF
printf(...
#endif
 
Et quand tu ne veux pas que les printf() soient utilisées, tu compiles avec -D NO_PRINTF (à vérifier selon le compilateur que tu utilises) ou bien tu écris ça dans ton code source à l'endroit que tu jugeras opportun : #define NO_PRINTF
 

Vel-Ryphon a écrit :

Pourquoi printf() ? des mauvaises habitudes du C lol


lol indeed [:petrus75]

Reply

Marsh Posté le 04-07-2008 à 14:01:03    

Ok, merci !
 
La solution est à la hauteur du besoin : pas vraiment élégant ^^


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 14:01:03   

Reply

Marsh Posté le 04-07-2008 à 14:48:22    

Ou, au pire de chez pire:
 

Code :
  1. #define printf(...) ;
  2. #include "header3.h"
  3. #undef printf


 
Ca remplacera tous les printf par rien.

Reply

Marsh Posté le 04-07-2008 à 14:52:05    

Je n'avais pas pensé à cette solution. Mais effectivement, c'est pire encore. [:joce]
 
M'enfin je pense qu'on n'est plus à ça près. [:petrus75]

Reply

Marsh Posté le 04-07-2008 à 14:53:04    

mais t'as des printf dans des inline dans tes .h déjà ?

Reply

Marsh Posté le 04-07-2008 à 14:57:42    

pas de printf dans des fonction inline, puisque pas de fonction inline impactées.


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 14:59:41    

donc t'as pas de printf dans tes .h ...

Reply

Marsh Posté le 04-07-2008 à 15:16:25    

je n'ai pas de fichiers .cpp, mes classes et leurs sources sont codés dans le .h, donc les printfs disséminé dans les fonctions se trouvent dans le .h.


---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 04-07-2008 à 15:22:19    

Vel-Ryphon a écrit :

je n'ai pas de fichiers .cpp, mes classes et leurs sources sont codés dans le .h, donc les printfs disséminé dans les fonctions se trouvent dans le .h.


 [:kzimir]  [:tibo2002]  [:wiids]  [:omgwtf]  [:hclinton]  [:il a ri 7]  [:ji-han]

Reply

Marsh Posté le 04-07-2008 à 15:40:38    

[:cerveau whistle]


---------------
Python Python Python
Reply

Marsh Posté le 04-07-2008 à 15:42:00    

on a le droit de hillaryter? [:petrus dei]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed