OVH Cloud OVH Cloud

existence d'une fonction

11 réponses
Avatar
Alain Cabiran
Bonjour,

le code suivant renvoie false, autrement dit
le test de definition du symbole fonction1
ne fonctionne pas avec la declaration d'une fonction.

#include <iostream>
#include <iomanip>

int fonction1() { return 1; }

#ifdef fonction1
bool fonction2() { return true; }
#else
bool fonction2() { return false; }
#endif

int main()
{
std::cout << "does #ifdef handle function names ? "
<< std::boolalpha
<< fonction2()
<< std::endl;
}

existe-il un moyen de tester l'existence d'une fonction
à l'exécution ??

merci d'avance pour toute piste

Alain Cabiran

1 réponse

1 2
Avatar
Luc Hermitte
Alain Cabiran wrote in
news:4177f3d2$0$15753$:

gcc sous cygwin est en version 3.3.4 si mes souvenirs sont bons.

Sous debian-toujours-a-la-bourre c'est 2.95 :-). Étant sous woody, Je
ne sais pas si je peux passer en testing sans risque : la woody
d'install ne reconnait pas ma carte scsi donc si ça crashe c'est
l'enfer assuré pour récupérer mon système.


Ah. Sur ma première partition, j'ai la sarge je crois bien, et la version
3.3.? de GCC (pas mis à jour depuis un moment). Mais je n'ai pas de
problèmes d'instabilité dûs à mon matériel.

voilà pourquoi j'utilise encore gcc 2.95


Au pire, il est toujours possible de mettre à jour comme l'a dit Jean
Marc

tant pis, le plus simple est de continuer comme ça, en espérant que la
sarge devienne rapidement stable. Je vais pas me faire un autotoconf
/ automake (que je ne connais pas de surcroit) pour chaque prog de
100
lignes...


Pas besoin de faire des centaines de trucs comme ça. Il en suffit d'un
qui va générer un setup.hpp par exemple. Tu l'utiliseras après pour
savoir ce à quoi tu as droit ou non, et eventuellement définir des
wrappers en conséquence.

Si tu isoles les choses dispos sur une version ou un autre, tu peux
également te contenter d'un simple #if sur la version de ton compilateur.
Par contre, c'est un chouilla moins "souple".

--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/Utilisateurs/dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>

1 2