Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 octobre 2008
-
10 oct. 2008 à 01:17
Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 octobre 2008
-
13 oct. 2008 à 15:06
Bonsoir,
je souhaiterai trouver un moyen de vérifier l'existence de vsscanf pour définir des fonctions l'utilisant.
Existe t-il une commande préprocesseur qui me permette de le faire?
(Dans le genre #if defined(vsscanf(const char*, const char*, ...)) ou #ifdef)
(Les espaces me gènent en fait :D)
D'avance merci. :)
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 13 oct. 2008 à 14:49
Salut,
Je ne connais pas de méthode pour savoir si une fonction existe dans une librairie statique (Par contre, on peut sans problème tester l'existence d'une fonction dans une .so ou .dll). Je ne pense pas que ce type de méthode puisse exister du fait de l'architecture de compilation du C (prépro/compilo/linqueur).
Par contre, peut être existe-t-il une variable qui est définie si et seulement si cette fonction est présente -> Si un #define JE_SAIS_PAS_QUOI existe systématiquement quand vsscanf existe. Tu peux jeter un coup d'oeil à la recherche d'une variable de la sorte dans stdarg.h.
Soit dit en passant, vsscanf n'est pas une fonction du standard, donc théoriquement, il ne faudrait pas s'en servir. Elle ne serait absente que sous Windows ce ne serait pas franchement un problème, mais elle semble aussi manquer à certains UNIX.
Bref, le plus sûr reste de réécrire soit même cette fonction... Beaucoup de réécriture de celle-ci se trouve sur le net. Par exemple, tu en as une à la fin de ce post ci.
Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 octobre 2008 13 oct. 2008 à 15:06
J'ai passé à vrai dire une nuit entière à chercher les diverse réécriture de vsscanf aucune ne m'a convaincu,
soit par ce que le nombre d'argument était limité (un comble pour une fonction elliptique),
soit par ce qu'il avait des fuites de mémoire
ou encor soit par ce qu'elle obligeait à utliser les MFC...
En revanche la fonction vsscanf fait parti du standard C99 ,normalement et tu as raison, on doit pouvoir vérifier son existence grâce au symbole __STDC_VERSION__ mais il me semble (peut-être que je me trompe) qu'il n'est pas disponible sous Visual studio.
Enfin outre vsscanf c'était une vraie question que je posais là en effet ne serait-il pas dommage de ne pas pouvoir choisir entre telle ou telle fonction par rapport aux définitions disponibles point de vu performance?
Fituza
Messages postés23Date d'inscriptionmardi 20 avril 2004StatutMembreDernière intervention16 octobre 2008 11 oct. 2008 à 01:42
D'une façon heureusement que non (imagine tu as une surcharge de fonction l'une est la mais pas l'autre) et malheuresement pour moi encor non...
Je poste ici un bout de code (bateau à souhait) pour ce qui verrait mieu mon problème avec...
#include
#include <stdarg.h>