Eviter de vérifier des fichier inclus [C/C++] - Programmation
Marsh Posté le 19-04-2001 à 10:59:34
tu peux pas utiliser des instructions du type
#IFNDEF blabla
#DEFINE blabla
la tu mets tes include
#ENDIF
??
Marsh Posté le 19-04-2001 à 11:25:37
HEIN? Ce qui tu as écrit permet juste d'éviter de définir 2x la même chose. Or ce que je veux, c'est qu'il arrête de checker les fichiers inclus. Voila un p'tit exemple
J'écris, dans le fichier test.cpp le code suivant (en gros)
#include "super_machin.h"
void main(....){
int a=2:
int b=0;
char c=0:
c=2*a;
b=super_fonction(a,c);//défini dans super_machin.h
}
Je veux que lorsque je compile cela, Visual C++ 6 me dise
attention, tu fais une conversion de int->char (c=2*a) =>risque de perte de donnée.
Mais je ne veux pas qu'il me fasse chier en me disant dans super_machin tu as écrit .... et c'est peut-être faux. Je ne veux pas qu'il affiche les warnings provenant d'un fichier inclus. VOILA
J'espère que c'est plus clair, au cas ou cela ne l'était pas.
D'avance merci
@+
Marsh Posté le 19-04-2001 à 11:29:36
Mais quels sont les warnings que t'as des fichiers inclus ? En principe, il n'y en a pas.
Marsh Posté le 19-04-2001 à 12:50:32
si sous Visual ya des warning avec des include fournit par microsoft.
Par exemple lorsqu'on utilise la STL, le compilo est pas content et mets plein de warning.
moi, ce que j'ai fait, c'est que j'ai mis des:
#pragma warning( disable : 4786 )
un peu partout.
4786, c'est le numéro du warning qu'il me sort quand j'utilise la STL.
si tu veux faire du multiplateforme/multi chépasquoi, alors
#if defined(WIN32) etc...
#pragma warning( disable : 4786 )
#endif
C'est la seule solution que j'ai trouvé.
Marsh Posté le 19-04-2001 à 13:24:51
Verdoux? T'es sur de m'avoir compris.
Toute personne fournissant des librairies ne travaille pas avec le même compilateur et pas obligatoirement avec le même niveau de warning. Donc, obligatoirement, tu peux avoir des warnings que le programmeur n'avait pas. De plus, bcp de programmeur ne s'intéressent pas aux warnings et laissent donc les lignes du style:
int a=...;
char c=a+2;
A la place de
int a=...
char c=char(a+2);
Tu peux donc avoir des warnings. J'ai de la peine à croire que si tu as programmé avec des librairies incluses, tu n'as jamais eu un warning causé par la librairie.
Quoi qu'il en soit, je recherche toujours cette option et, malheureusement, SoWhatIn22, t'as solution ne convient pas à mon utilisation.
D'avance merci
@+
Marsh Posté le 19-04-2001 à 13:32:23
Ton pb de char vient d'un .c, pas d'un .h
En principe t'as pas besoin de recompiler tes librairies à chaque fois. T'as juste besoin des interfaces définies dans les .h et ensuite c'est le linker qui se démerde.
Marsh Posté le 19-04-2001 à 13:39:21
Avec les pargma tu dois pouvoir changer le warning level depuis le code... le baisser avant les .h puis le remonter
je ne vois pas mieux
Marsh Posté le 19-04-2001 à 13:42:39
Verdoux:
Lorsque tu écris #include xxxxx.h dans un fichier cpp appartenant à ton projet et que tu cliques sur compile avec un warning level 4 sous VC++ 6, il vérifie aussi ce que tu inclus.
Il me sort donc des warnings qui ne concernent PAS MON CODE. Je cherche donc un moyen de contourner cela.
Tu veux des exemples? En voilà, totalement au bol
c:\program files\microsoft visual studio\vc98\include\mmsystem.h(1623) : warning C4201: nonstandard extension used : nameless struct/union
c:\program files\microsoft visual studio\vc98\include\mmsystem.h(1627) : warning C4201: nonstandard extension used : nameless struct/union
c:\program files\microsoft visual studio\vc98\include\mmsystem.h(1648) : warning C4201: nonstandard extension used : nameless struct/union
c:\program files\microsoft visual studio\vc98\include\mmsystem.h(1652) : warning C4201: nonstandard extension used : nameless struct/union
c:\program files\microsoft visual studio\vc98\include\xmemory(39) : warning C4100: '_P' : unreferenced formal parameter
c:\program files\microsoft visual studio\vc98\include\xmemory(41) : warning C4100: '_P' : unreferenced formal parameter
c:\program files\microsoft visual studio\vc98\include\vector(249) : warning C4663: C++ language change: to explicitly specialize class template 'vector' use the following syntax:
template<> class vector<bool,class std::allocator<unsigned int> > ...
c:\program files\microsoft visual studio\vc98\include\xlocale(242) : warning C4511: 'codecvt_base' : copy constructor could not be generated
c:\program files\microsoft visual studio\vc98\include\xlocale(223) : see declaration of 'codecvt_base'
c:\program files\microsoft visual studio\vc98\include\xlocale(242) : warning C4512: 'codecvt_base' : assignment operator could not be generated
c:\program files\microsoft visual studio\vc98\include\xlocale(223) : see declaration of 'codecvt_base'
c:\program files\microsoft visual studio\vc98\include\xlocale(296) : warning C4663: C++ language change: to explicitly specialize class template 'codecvt' use the following syntax:
template<> class codecvt<unsigned short,char,int> ...
Marsh Posté le 19-04-2001 à 13:52:05
Si ça passe au niveau 3, tu peux essayer par exemple:
#pragma warning (push, 3)
#include <mmsystem.h>
#pragma warning (pop)
Marsh Posté le 19-04-2001 à 14:31:10
Oui, sauf que je n'inclus pas mmsystem.h. C'est un autre .h qui inclut mmsystem.h
Sinon,qqn connait un algorithme efficace pour trouver la valeur median d'un tableau de valeur?
Marsh Posté le 19-04-2001 à 10:54:05
Salut
Je bosse avec Visual C++ 6.0 et je commence à en avoir marre de le voir vérifier à la compilation les fichiers inclus. Je travaille en effet avec un niveau de warning max. (level 4) et il controle à chaque fois les libraires, qui elles n'ont pas été prg pour passer sans erreur le level 4. Ce qui est vraiment chiant. J'ai ainsi 350 warnings, mais AUCUN pour mon code. ALors, il y a un moyen de dire au compilateur ne check pas les fichiers inclus? (#include balabala.h)
D'avance merci
@+