bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
Pierre Maurette wrote:En revanche, je ne sais trop que penser des facilités issues de C++,
présentes dans C99 et souvent admises en C(avec le bon commutateur, ou
en incluant le bon header). Je pense par exemple aux commentaires fin
de ligne //, aux bool, aux déclaration au sein du bloc.
Ce n'était pas le point qui m'importait le plus dans mon post, c'est
// c'est très bien. Cela incite à mettre des commentaires.
Et un compilo qui n'est pas capable d'implémenter ça pour le lendemain
ne vaut pas la peine qu'on s'y attarde.
Et puis sur une base "fonction" ou "unité", c'est facile à corriger.
Je ne savais pas que l'on pouvais faire des déclarations au sein d'un
bloc, faudra que j'essaye, il est possible que je me demande ensuite
comment j'ai pu m'en passer, mais a priori en C ça a surtout un interet
théorique.
En fait, je pensais surtout à des trucs comme:
Je pense qu'il y aurait eu des choses plus importantes à mettre dans la
norme.
Je ne pensais pas à l'évolution de la norme, mais à ce que permettent
bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Pour le bool, c'est un peu compliqué.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile, c'est
Pierre Maurette wrote:
En revanche, je ne sais trop que penser des facilités issues de C++,
présentes dans C99 et souvent admises en C(avec le bon commutateur, ou
en incluant le bon header). Je pense par exemple aux commentaires fin
de ligne //, aux bool, aux déclaration au sein du bloc.
Ce n'était pas le point qui m'importait le plus dans mon post, c'est
// c'est très bien. Cela incite à mettre des commentaires.
Et un compilo qui n'est pas capable d'implémenter ça pour le lendemain
ne vaut pas la peine qu'on s'y attarde.
Et puis sur une base "fonction" ou "unité", c'est facile à corriger.
Je ne savais pas que l'on pouvais faire des déclarations au sein d'un
bloc, faudra que j'essaye, il est possible que je me demande ensuite
comment j'ai pu m'en passer, mais a priori en C ça a surtout un interet
théorique.
En fait, je pensais surtout à des trucs comme:
Je pense qu'il y aurait eu des choses plus importantes à mettre dans la
norme.
Je ne pensais pas à l'évolution de la norme, mais à ce que permettent
bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Pour le bool, c'est un peu compliqué.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile, c'est
Pierre Maurette wrote:En revanche, je ne sais trop que penser des facilités issues de C++,
présentes dans C99 et souvent admises en C(avec le bon commutateur, ou
en incluant le bon header). Je pense par exemple aux commentaires fin
de ligne //, aux bool, aux déclaration au sein du bloc.
Ce n'était pas le point qui m'importait le plus dans mon post, c'est
// c'est très bien. Cela incite à mettre des commentaires.
Et un compilo qui n'est pas capable d'implémenter ça pour le lendemain
ne vaut pas la peine qu'on s'y attarde.
Et puis sur une base "fonction" ou "unité", c'est facile à corriger.
Je ne savais pas que l'on pouvais faire des déclarations au sein d'un
bloc, faudra que j'essaye, il est possible que je me demande ensuite
comment j'ai pu m'en passer, mais a priori en C ça a surtout un interet
théorique.
En fait, je pensais surtout à des trucs comme:
Je pense qu'il y aurait eu des choses plus importantes à mettre dans la
norme.
Je ne pensais pas à l'évolution de la norme, mais à ce que permettent
bool (ravi de faire sa connaissance) ça doit être bien, mais je m'en
passe encore.
Pour le bool, c'est un peu compliqué.
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile, c'est
En fait, je pensais surtout à des trucs comme:
for(int i = 0; i < TAILLE; ++i)
D'un autre coté, j'aime bien séparer sémantiquemnt les entiers des
variables booléennes. Ça veut dire appliquer uniquement des opérateurs
arithmétiques (dont les bitwise) aux entiers, et logiques aux
booléens. Ça signifie également if(!VarBool) mais if(VarInt == 0).
Donc, je trouve logique de marquer cette séparation par un type.
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
En fait, je pensais surtout à des trucs comme:
for(int i = 0; i < TAILLE; ++i)
D'un autre coté, j'aime bien séparer sémantiquemnt les entiers des
variables booléennes. Ça veut dire appliquer uniquement des opérateurs
arithmétiques (dont les bitwise) aux entiers, et logiques aux
booléens. Ça signifie également if(!VarBool) mais if(VarInt == 0).
Donc, je trouve logique de marquer cette séparation par un type.
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
En fait, je pensais surtout à des trucs comme:
for(int i = 0; i < TAILLE; ++i)
D'un autre coté, j'aime bien séparer sémantiquemnt les entiers des
variables booléennes. Ça veut dire appliquer uniquement des opérateurs
arithmétiques (dont les bitwise) aux entiers, et logiques aux
booléens. Ça signifie également if(!VarBool) mais if(VarInt == 0).
Donc, je trouve logique de marquer cette séparation par un type.
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
Pierre Maurette wrote:
[...]
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Je ne comprends pas, on peut comparer une variable qui peut être
true/false à une autre qui a les mêmes possibilités.
Mais parfois pas avec le résultat souhaité:
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Pas nécessairement 'profondément', cela peut simplifier le code ce qui
est toujours bon à prendre, il serait étonnant qu'une application
dépende profondément de cette possibilité.
On pinaille sur les mots.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
Personnellement, je ne connais pas ces gens là, ils ne m'ont jamais fait
de remontrances au sujet de la manière dont j'écris mes programmes,
j'en conclue tout naturellement qu'ils doivent en être satisfaits.
J'ai cité des IDE, mais c'est vrai des deux compilateurs sous jacents
Pierre Maurette wrote:
[...]
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Je ne comprends pas, on peut comparer une variable qui peut être
true/false à une autre qui a les mêmes possibilités.
Mais parfois pas avec le résultat souhaité:
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Pas nécessairement 'profondément', cela peut simplifier le code ce qui
est toujours bon à prendre, il serait étonnant qu'une application
dépende profondément de cette possibilité.
On pinaille sur les mots.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
Personnellement, je ne connais pas ces gens là, ils ne m'ont jamais fait
de remontrances au sujet de la manière dont j'écris mes programmes,
j'en conclue tout naturellement qu'ils doivent en être satisfaits.
J'ai cité des IDE, mais c'est vrai des deux compilateurs sous jacents
Pierre Maurette wrote:
[...]
Pour
true et false, c'est différent. true pose un problème si on s'amuse à
l'utiliser en comparaison (OK, c'est stupide).
Je ne comprends pas, on peut comparer une variable qui peut être
true/false à une autre qui a les mêmes possibilités.
Mais parfois pas avec le résultat souhaité:
Les "tableaux flexibles", je m'en suis déjà servi sous gcc, ça marche
(au moins pour une utilisation triviale mais je n'ai pas poussé le
compilo dans ses retranchements). C'est en tout cas très utile.
On revient sur le fond de mon interrogation. Si c'est très utile,
c'est donc que le code en dépend profondément.
Pas nécessairement 'profondément', cela peut simplifier le code ce qui
est toujours bon à prendre, il serait étonnant qu'une application
dépende profondément de cette possibilité.
On pinaille sur les mots.
Donc que la
réutilisation du code de la fonction dans C++Builder ou dans Visual
Studio sera impossible ou compliquée. Non ?
Personnellement, je ne connais pas ces gens là, ils ne m'ont jamais fait
de remontrances au sujet de la manière dont j'écris mes programmes,
j'en conclue tout naturellement qu'ils doivent en être satisfaits.
J'ai cité des IDE, mais c'est vrai des deux compilateurs sous jacents
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Tu parles de VLA ou de flexible array. C'est deux choses differentes.
Ton exemple parle bien de flexible array (note pour les reponses des
posts suivants) qui sont supportes par la pluspart des compilos pre-C99.
Pour les VLA c'est autre chose.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Tu parles de VLA ou de flexible array. C'est deux choses differentes.
Ton exemple parle bien de flexible array (note pour les reponses des
posts suivants) qui sont supportes par la pluspart des compilos pre-C99.
Pour les VLA c'est autre chose.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Tu parles de VLA ou de flexible array. C'est deux choses differentes.
Ton exemple parle bien de flexible array (note pour les reponses des
posts suivants) qui sont supportes par la pluspart des compilos pre-C99.
Pour les VLA c'est autre chose.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
Je ne pense pas. Ce qui est défini par C89 est encore valable pour
beaucoup de choses. D'autre part, si tes élèves sont complètement
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Sans forcément faire un cours sur les VLA, mentionner leur existence, à
quoi ils servent, etc. serait bénéfique. Par exemple, vous donnez les
bases nécessaires au cours de programmation, et lorsque celles-ci
(tableaux, pointeurs, passage par valeur, et tutti quanti) sont assimilés,
consacrer un cours aux spécificités que vous n'avez pas (eu) le temps
d'aborder me semble utile.
Dans mes cours de C, à l'époque, nous avons découvert l'utilisation
d'opérateurs "raccourcis" (+=, ++, test?a:b ,etc.) relativement tard dans
le cursus.
Je ne pense pas. Ce qui est défini par C89 est encore valable pour
beaucoup de choses. D'autre part, si tes élèves sont complètement
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Sans forcément faire un cours sur les VLA, mentionner leur existence, à
quoi ils servent, etc. serait bénéfique. Par exemple, vous donnez les
bases nécessaires au cours de programmation, et lorsque celles-ci
(tableaux, pointeurs, passage par valeur, et tutti quanti) sont assimilés,
consacrer un cours aux spécificités que vous n'avez pas (eu) le temps
d'aborder me semble utile.
Dans mes cours de C, à l'époque, nous avons découvert l'utilisation
d'opérateurs "raccourcis" (+=, ++, test?a:b ,etc.) relativement tard dans
le cursus.
Je ne pense pas. Ce qui est défini par C89 est encore valable pour
beaucoup de choses. D'autre part, si tes élèves sont complètement
débutants, leur faire assimiler les VLA serait prématuré, mieux vaut
leur faire assimiler des choses comme la priorité des opérateurs du
langage C ou les pointeurs. Ils découvraient par eux-même les VLA
ainsi que les autres joyeusetés de C99.
Ben oui, dans mon cours, j'ai pas parlé des VLA. Mais là, je
corrige mes copies, et j'en ai plein qui utilise des VLA en
croyant utiliser un pointeur. Et le compilo a rien dit, puisque
c'est du C99.
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Sans forcément faire un cours sur les VLA, mentionner leur existence, à
quoi ils servent, etc. serait bénéfique. Par exemple, vous donnez les
bases nécessaires au cours de programmation, et lorsque celles-ci
(tableaux, pointeurs, passage par valeur, et tutti quanti) sont assimilés,
consacrer un cours aux spécificités que vous n'avez pas (eu) le temps
d'aborder me semble utile.
Dans mes cours de C, à l'époque, nous avons découvert l'utilisation
d'opérateurs "raccourcis" (+=, ++, test?a:b ,etc.) relativement tard dans
le cursus.
Laurent Deniau wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
Oui, dur...
Laurent Deniau wrote:
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
Oui, dur...
Laurent Deniau wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?
Un enum est de type int. int a un rank plus grand que char et short.
Donc au mieux, mais toujours pas correct, tu peux definir _Bool (ou
bool) comme un unsigned char. Ceci dit, c'est aussi incompatible avec
c99 puisque:
6.7.2.1-4
A bit-field shall have a type that is a qualified or unqualified version
of _Bool, signed int, unsigned int, or some other implementation-defined
type.
Fait ton choix d'incompatibilite camarade ;-). Moi j'ai choisi d'etre
compatible avec le rank parce que je prohibe les bit-field et qu'un
tableau de bool est plus petit si c'est un unsigned char.
Dernier point, pour convertir un integral type en bool, il faut faire
!!value (on dirait du Eiffel ;-) )
Oui, dur...
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
Stephane Zuckerman wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
D'ailleurs, hormis bool et le %z, en y réfléchissant bien,
je ne vois pas d'intérêt flagrant à enseigner C99 au lieu
de C89...
Stephane Zuckerman wrote:
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
D'ailleurs, hormis bool et le %z, en y réfléchissant bien,
je ne vois pas d'intérêt flagrant à enseigner C99 au lieu
de C89...
Stephane Zuckerman wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Honnêtement, si ce n'est pas en cours qu'on apprend le C99, comment
espérez-vous répandre son utilisation ?
D'ailleurs, hormis bool et le %z, en y réfléchissant bien,
je ne vois pas d'intérêt flagrant à enseigner C99 au lieu
de C89...
Laurent Deniau wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?
Laurent Deniau wrote:
Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?
Laurent Deniau wrote:Reste l'option C89 + #include <boyerbool.h>
typedef enum {true=1, false=0} bool;
Definition incompatible avec c99...
Ca m'avait échappé.
Et si on fait un
#if __STDC_VERSION__ >= 199901L
#include <stdbool.h>
#else
typedef enum {true=1, false=0} bool;
#endif
on a quand même des problèmes ?