Bonjour,
Je viens de compiler un code avec Visual Studio 2005 et il ne veut pas de mon
#include <stdbool.h>
Le code marche très bien avec gcc.
Est-ce que quelqu'un sait pourquoi visual ne connait pas stdbool.h?
Bonjour,
Je viens de compiler un code avec Visual Studio 2005 et il ne veut pas de mon
#include <stdbool.h>
Le code marche très bien avec gcc.
Est-ce que quelqu'un sait pourquoi visual ne connait pas stdbool.h?
Parce que Microsoft a décidé de ne pas implanter la norme C99. Les fichiers d'en-tête standards spécifiques à cette version de la norme ne sont donc pas reconnus par le compilateur de Visual Studio.Envoyé par Binch
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Ok merci, donc la seule solution est de jouer avec des int?
Ou de changer d'EDI/CompilateurEnvoyé par Binch
![]()
En fait tu peut très bien fait ton propre type booléen: Existe-t'il un type booléen en C ?![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Effectivement! Mais je suis assez fan du debogueur de visual!
Merci pour la réponse
Bonjour,
Pour être tranquille tu peux faire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #if __STDC_VERSION__ >= 199901L # include <stdbool.h> #else # define TRUE 1 # define FALSE 0 # define bool int # define __bool_true_false_are_defined #endif![]()
Normal. VS2005 ne supporte pas C99.Envoyé par Binch
Mais je dirais qu'en C les booléens ça ne sert à rien. Une expression logique retourne un int valant 0 ou 1...
Définir un type booléen a une valeur documentaire...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
et je dirais même plus...![]()
Etant donné qu'on peut définir un booléen avec un char, on peut économiser de la place, pour des applications demandant beaucoup de mémoire..
Multiplié par 500 000, ça fait une différence entre int et char....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define BOOLEAN char
Oui, je pense qu'il est mieux de prendre un char, moi je prend même un unsigned char pour mon type bool perso![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
sauf qu'un typedef serait plus approprié qu'un define, je pense...
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
+1Envoyé par Médinoc
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Sauf si tu t'amuses à passer tes booléens en paramètre vers des fonctions... Les mettre en char peut surcharger ton code par du code de transformation char -> int...Envoyé par souviron34
Jc
La promotion est systématique ?Envoyé par fearyourself
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Si vous voulez etre compatible avec C99, il faudrait que true et false soient en minuscule.
Lorsqu'on passe en paramètre, oui à mon souvenir.Envoyé par Franck.H
Jc
Mais C99 fait de bool une macro...Envoyé par Médinoc
Je verrai bien un entete
Je sais, on empiete sur les identificateurs reserves, mais vu le contexte ca me semble mieux que de ne pas le faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 #if HAS_STDBOOL_H #include <stdbool.h> #elif !defined(__bool_true_false_are_defined) typedef char _Bool; #define true 1 #define false 0 #define bool _Bool #define __bool_true_false_are_defined 1 #end
Pas si il existe un prototype pour la fonction.Envoyé par Franck.H
Quelle promotion? Si tu passes un char a un char il n'y a pas de promotion. Je crois qu'il y a de la confusion avec le fait qu'un char est promu en int quand passe a une fonction sans prototype (il ne doit pas y en avoir encore beaucoup) ou comme parametre variadique.Envoyé par fearyourself
Bon bin c'est bon à savoir que cela peut changer entre fonction avec ou sans prototype ... !
Merci de l'info![]()
Mon Site
Ma bibliothèque de gestion des chaînes de caractères en C
L'imagination est plus importante que le savoir. A. Einstein
Je ne répond à aucune question technique par MP, merci d'avance !
Partager