CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Visual C++ 2010, répérer les warnings ?

TheLittleRobear
TheLittleRobear
Niveau 10
27 février 2012 à 23:28:22

Bonsoir, comment bien repérer tout les warnings de mon code avec Visual C++ ? J'ai mis le "W4", et quand je compile dans "Sortie/Générer" je n'ai que les warnings du main (j'ai 8 autres .c & .h )!

:merci:

Pseudo supprimé
Pseudo supprimé 27 février 2012 à 23:49:24

Salut,

Est ce que tu est sur qu'il compile tout tes fichiers?

Sinon, dans les propriété de ton projet, dans les options du compilo, ya pas un switchenable all warning ou un truc du genre?

J'arrive plus à ouvrir le projet que j'avais fait avec, donc je me souviens pas des fenêtre -_-' va falloir que je règles ça :(

Peut être que tu n'a pas de warning parce que ben ta pas écris de couille dans ton code qui en génére :) C'est une possibilité hein lol

TheLittleRobear
TheLittleRobear
Niveau 10
27 février 2012 à 23:55:30

Non non y'a forcement des warnings :noel:

Oui il compile tout les fichiers, mon programme ne fonctionnerait pas correctement sinon.

LGV
LGV
Niveau 28
28 février 2012 à 11:22:07

Que dit le compilo si tu ne recompiles qu'un seul .c/.cpp ?

Si tu as un doute, rajoute un bout de code bidon qui genere un warning, juste pour etre sur qu'il est bien pris en compte.

Lapintade
Lapintade
Niveau 30
28 février 2012 à 16:46:39

ben oui, quand on écrit du bon code, il n'y a pas de warnings.

TheLittleRobear
TheLittleRobear
Niveau 10
28 février 2012 à 20:36:57

Les warnings s'affichent, mais que ceux de la page à partir de laquelle je compile...

Lapintade, j'ai des warnings.

Pocolo
Pocolo
Niveau 10
28 février 2012 à 20:43:15

Dans Visual Studio (entre autres) si tu compiles ton programme une première fois tous les fichiers sont compilés, mais après seuls les fichiers dans lesquels il y a eu des changements sont re-compilés, c'est pratique car cela permet de réduire le temps de la compilation.

A noter que si l'on modifie un header alors tous les fichiers c ou cpp dans lesquels le header en question est inclus devront être re-compilés.

TheLittleRobear
TheLittleRobear
Niveau 10
28 février 2012 à 20:50:50

Ah ok merci de la précision Pocolo, je comprend pourquoi VC++ galère un peu lors de la première compilation :noel:

En gros faut juste modifier/enlever la modif' du header de mes defines (qui sont utilises dans tout mes fichiers) et c'est bon ? :hap:

caelacanthe
caelacanthe
Niveau 10
28 février 2012 à 21:10:30
  1. Lapintade Voir le profil de Lapintade
  2. Posté le 28 février 2012 à 16:46:39 Avertir un administrateur
  3. ben oui, quand on écrit du bon code, il n'y a pas de warnings.

:d) du bon code? même pour les warning comparison signed/unsigned? corriger ce warning impose généralement de mettre un cast. si on sait qu'il n'y aura pas de problème, autant le laisser traîner, non? :(

Pocolo
Pocolo
Niveau 10
28 février 2012 à 21:21:26

" autant le laisser traîner, non? :( "

Oui, de toute façon lorsque l'on écrit du mauvais code comme toi cela n'a aucune importance. :oui:

TheLittleRobear
TheLittleRobear
Niveau 10
28 février 2012 à 21:32:09

:rire:

Moi je veux avoir un code tout beau tout propre :hap:

godrik
godrik
Niveau 30
28 février 2012 à 21:40:37

caelacanthe, perso quand un etudiant me file un code avec des warning a la compilation sur des options classique, je l'egorge... (Bon, je les egorges aussi si il y n'importe quel erreur dans valgrind ou fuite de memoire.)

Un warning c'est souvent un bug qui se cache. Si ce n'est pas un bug qui se cache autant le masquer en le corrigeant, ca permet de voir les warning qui sont important plus facilement.

caelacanthe
caelacanthe
Niveau 10
28 février 2012 à 22:06:33

bon d'accord, pardon, tout le monde a besoin d'être recadré un jour ou l'autre. :noel:

Pseudo supprimé
Pseudo supprimé 29 février 2012 à 08:16:14

godrik si tu lis mes codes sources tu deviendra un criminel multi-recidiviste car tu aura envie de metuer 2 ou 3 fois mdr

En ce moment j'ai totalement delaissé le C[++] pour le java et le D. Ceci dits j'apporte rien de spécial à ce topic alors je retourne devant mon café..

pilo1488
pilo1488
Niveau 10
29 février 2012 à 10:04:10

Combien de fois j'ai eu a corrigé des bugs venant de rapport de clients, pour découvrir que la ligne incriminé contenait un joli warning :)

des trucs du genre

unsigned long t;

...

if(t > 0) t--; (celui il était marant, car après il y avait une boucle de 0 à t...)

Ou des classe qui ne répondent pas à une méthode en Objective C (un mystère pourquoi le compilateur ne met qu'un warning...).

bref moins y'a de warning dans un code, mieux c'est!

"du bon code? même pour les warning comparison signed/unsigned? corriger ce warning impose généralement de mettre un cast. si on sait qu'il n'y aura pas de problème, autant le laisser traîner, non?"
Tu peux laisser tout les warnings que tu juge sans probleme, le soucis c'est que sur un projet raisonable, des cas comme ca, tu en aura entre 500 et 10000, et pas sur que du coup après tu vois un warning qui pourra poser probleme. Dans la mesure ou ne pond pas 5000 lignes de code d'un coup sans compiler, on peut se permetre de prendre un peu de temps a corriger les warnings!

TheLittleRobear
TheLittleRobear
Niveau 10
29 février 2012 à 13:26:48

1>------ Début de la génération : Projet : AreYouAlive, Configuration : Debug Win32 ------
1> tools.c
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\tools.c(65):
warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\tools.c(66):
warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1> physicsEngine.c
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(29): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(30): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(49): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(50): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(57): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(78): warning C4244: '=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'jj1' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4189: 'i' : variable locale initialisée mais non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'i1' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'j2' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'jj2' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'j1' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'ii1' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'ii2' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4101: 'i2' : variable locale non référencée
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\physicsengin
e.c(46): warning C4189: 'j' : variable locale initialisée mais non référencée
1> main.c
1>c:\users\florent\documents\visual studio 2010\projects\areyoualive\areyoualive\main.c(12): warning C4026: fonction déclarée avec une liste de paramètres formels
1> hole.c
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\hole.c(113):
warning C4100: 'tab' : paramètre formel non référencé
1> graphicsEngine.c
1> game.c
1> events.c
1> character.c
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\character.c(
29): warning C4244: '=' : conversion de 'float' en 'int', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\character.c(
30): warning C4244: '=' : conversion de 'float' en 'int', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\character.c(
58): warning C4244: '+=' : conversion de 'int' en 'Sint16', perte possible de données
1>c:\users\florent\documents\visual studio
2010\projects\areyoualive\areyoualive\character.c(
59): warning C4244: '+=' : conversion de 'int' en 'Sint16', perte possible de données
1> animation.c
1> Génération de code en cours...
1> AreYouAlive.vcxproj -> C:\Users\Florent\documents\visual studio 2010\Projects\AreYouAlive\Debug\AreYouAlive.exe
========== Génération : 1 a réussi, 0 a échoué, 0 mis à jour, 0 a été ignoré ==========

Voilà y'en avait :hap:

caelacanthe
caelacanthe
Niveau 10
29 février 2012 à 13:42:26

"if(t > 0) t--; (celui il était marant, car après il y avait une boucle de 0 à t...) "

:d) ça ou la comparaison entre un entier signé et non-signé, l'entier négatif est pratiquement toujours supérieur à l'insigné alors que ça ne se passe juste pas comme ça dans le monde réel ~ :hap: ~

et bien vu pour le flood du rapport de build, j'y avais pas pensé. :(

TheLittleRobear
TheLittleRobear
Niveau 10
29 février 2012 à 13:48:10

conversion de 'unsigned int' en 'Sint16', perte possible de données. Comment il vire ce warning ?

SDL_Rect* GetPosRes(SDL_Rect pos, SDL_Rect* posReturn)
{
float x = (float)pos.x, y = (float)pos.y;
Res res;

GetResolution(&res);

x = x*res.coefDownW;
y = y*res.coefDownH;

pos.x = (int)x;
pos.y = (int)y;

posReturn->x = pos.x;
posReturn->y = pos.y;

return posReturn;
}

Ces deux lignes sont associés à ce warning :

pos.x = (int)x;
pos.y = (int)y;

caelacanthe
caelacanthe
Niveau 10
29 février 2012 à 13:51:53

j'avoue ne pas saisir l'intérêt de tous ces cast...

en même temps, je règle le problème en n'utilisant plus que des int/uint, c'est plus organisé et on ne mélange pas tout. :oui:

TheLittleRobear
TheLittleRobear
Niveau 10
29 février 2012 à 14:18:03

res.coef est un float (genre 0.5)

Donc pour avoir le résultat de pos.x*res.coefDownW par exemple, je dois passer par x.

Bref, comment je résous ça dans ma situation ? :hap:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware