je voudrais m'assurer au moment de la compilation que la taille d'une
structure est bien celle que j'attends afin de ne pas être ennuyé pas
des histoire de padding.
je voudrais m'assurer au moment de la compilation que la taille d'une structure est bien celle que j'attends afin de ne pas être ennuyé pas des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison retourne 0 ou 1... Le static est juste là pour inciter le compilo à virer la variable vu que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
On 2008-10-15, Guillaume GOURDIN <trash@hotmail.com> wrote:
Bonjour à tous,
je voudrais m'assurer au moment de la compilation que la taille d'une
structure est bien celle que j'attends afin de ne pas être ennuyé pas
des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison
retourne 0 ou 1...
Le static est juste là pour inciter le compilo à virer la variable vu
que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. André Maurois)
je voudrais m'assurer au moment de la compilation que la taille d'une structure est bien celle que j'attends afin de ne pas être ennuyé pas des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison retourne 0 ou 1... Le static est juste là pour inciter le compilo à virer la variable vu que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
Marc Boyer -- Si tu peux supporter d'entendre tes paroles Travesties par des gueux pour exciter des sots IF -- Rudyard Kipling (Trad. André Maurois)
viza
On Wed, 15 Oct 2008 11:45:20 +0200, Guillaume GOURDIN wrote:
je voudrais m'assurer au moment de la compilation que la taille d'une structure est bien celle que j'attends afin de ne pas être ennuyé pas des histoire de padding.
On Wed, 15 Oct 2008 11:45:20 +0200, Guillaume GOURDIN wrote:
je voudrais m'assurer au moment de la compilation que la taille d'une
structure est bien celle que j'attends afin de ne pas être ennuyé pas
des histoire de padding.
On Wed, 15 Oct 2008 11:45:20 +0200, Guillaume GOURDIN wrote:
je voudrais m'assurer au moment de la compilation que la taille d'une structure est bien celle que j'attends afin de ne pas être ennuyé pas des histoire de padding.
> je voudrais m'assurer au moment de la compilation que la taille d'une > structure est bien celle que j'attends afin de ne pas être ennuyé p as > des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison retourne 0 ou 1... Le static est juste là pour inciter le compilo à virer la variabl e vu que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
de meme que l'on ne peut pas representer 1/0 sur un entier.
n'utilise pas de place. C'est la base de mon static assert.
a+, ld.
On 15 oct, 14:25, Marc Boyer <Marc.Bo...@cert.onera.fr.invalid> wrote:
On 2008-10-15, Guillaume GOURDIN <tr...@hotmail.com> wrote:
> Bonjour à tous,
> je voudrais m'assurer au moment de la compilation que la taille d'une
> structure est bien celle que j'attends afin de ne pas être ennuyé p as
> des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison
retourne 0 ou 1...
Le static est juste là pour inciter le compilo à virer la variabl e vu
que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
de meme que l'on ne peut pas representer 1/0 sur un entier.
> je voudrais m'assurer au moment de la compilation que la taille d'une > structure est bien celle que j'attends afin de ne pas être ennuyé p as > des histoire de padding.
On a pas le droit de définir un tableau avec une taille de 0, et la comparaison retourne 0 ou 1... Le static est juste là pour inciter le compilo à virer la variabl e vu que personne ne va l'utiliser. Sinon, on a perdu quelques octets...
de meme que l'on ne peut pas representer 1/0 sur un entier.
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
Antoine Leca
En news:, va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Les break sont inutiles (sauf peut-être pour éviter de recevoir des tombereaux d'avertissements de la part de compilateurs pointilleux).
Antoine
En news:slrngfdnjd.3l1.rixed@apc.happyleptic.org, rixed@happyleptic.org
va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) {
case 0: break;
case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser
de compiler une telle construction (avec x==0), je suis certain qu'il ne
doit pas être difficile de rencontrer un compilo qui va certes donner
l'avertissement requis par la norme, mais va continuer quand même la
compilation, pensant qu'il s'agit « seulement » d'une étourderie de
programmation.
Les break sont inutiles (sauf peut-être pour éviter de recevoir des
tombereaux d'avertissements de la part de compilateurs pointilleux).
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Les break sont inutiles (sauf peut-être pour éviter de recevoir des tombereaux d'avertissements de la part de compilateurs pointilleux).
Antoine
espie
In article <gda9j4$tr6$, Antoine Leca wrote:
En news:, va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic requis de toute implementation conforme.
In article <gda9j4$tr6$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
En news:slrngfdnjd.3l1.rixed@apc.happyleptic.org, rixed@happyleptic.org
va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) {
case 0: break;
case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser
de compiler une telle construction (avec x==0), je suis certain qu'il ne
doit pas être difficile de rencontrer un compilo qui va certes donner
l'avertissement requis par la norme, mais va continuer quand même la
compilation, pensant qu'il s'agit « seulement » d'une étourderie de
programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic requis
de toute implementation conforme.
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic requis de toute implementation conforme.
Antoine Leca
En news:gdacol$1bp1$, Marc Espie va escriure:
In article <gda9j4$tr6$, Antoine Leca wrote:
En news:, va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic requis de toute implementation conforme.
Désolé mais non : diagnostic requis signifie seulement que le compilateur _doit_ émettre un message, cela ne signifie pas qu'il doit refuser de créer le fichier objet (ce qui constitue la seule différence réelle entre un avertissement et une erreur non fatale sur la plupart des compilateurs). Donc émettre un avertissement est un diagnostic valable au sens de la norme.
Dans le genre, tu as en particulier les options '-pedantic', dont l'unique objet est d'émettre les diagnostics requis par la norme, alors même que les concepteurs du compilateur considèrent (à tort ou à raison, c'est un autre débat) que le dit diagnostic est inutile : donc ils marquent le diagnostic du sceau supposé infamant de la pédanterie, mais vont rarement jusqu'à refuser de compiler le dit programme.
Ou alors il faudrait plutôt utiliser '-pedantic-error' ou '-Wx' mais ces derniers ne sont PAS requis pour être conformes à la norme.
Antoine
En news:gdacol$1bp1$1@biggoron.nerim.net, Marc Espie va escriure:
In article <gda9j4$tr6$1@shakotay.alphanet.ch>,
Antoine Leca <root@localhost.invalid> wrote:
En news:slrngfdnjd.3l1.rixed@apc.happyleptic.org,
rixed@happyleptic.org va escriure:
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) {
case 0: break;
case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour
refuser de compiler une telle construction (avec x==0), je suis
certain qu'il ne doit pas être difficile de rencontrer un compilo
qui va certes donner l'avertissement requis par la norme, mais va
continuer quand même la compilation, pensant qu'il s'agit
« seulement » d'une étourderie de programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic
requis de toute implementation conforme.
Désolé mais non : diagnostic requis signifie seulement que le compilateur
_doit_ émettre un message, cela ne signifie pas qu'il doit refuser de créer
le fichier objet (ce qui constitue la seule différence réelle entre un
avertissement et une erreur non fatale sur la plupart des compilateurs).
Donc émettre un avertissement est un diagnostic valable au sens de la norme.
Dans le genre, tu as en particulier les options '-pedantic', dont l'unique
objet est d'émettre les diagnostics requis par la norme, alors même que les
concepteurs du compilateur considèrent (à tort ou à raison, c'est un autre
débat) que le dit diagnostic est inutile : donc ils marquent le diagnostic
du sceau supposé infamant de la pédanterie, mais vont rarement jusqu'à
refuser de compiler le dit programme.
Ou alors il faudrait plutôt utiliser '-pedantic-error' ou '-Wx' mais ces
derniers ne sont PAS requis pour être conformes à la norme.
De même que l'on ne peut pas avoir deux fois zéro dans un switch :
#define COMPILE_ASSERT(x) switch(x) { case 0: break; case (x): break; }
C'est habile mais je ne ferais pas confiance aux compilateurs pour refuser de compiler une telle construction (avec x==0), je suis certain qu'il ne doit pas être difficile de rencontrer un compilo qui va certes donner l'avertissement requis par la norme, mais va continuer quand même la compilation, pensant qu'il s'agit « seulement » d'une étourderie de programmation.
Non, ca n'est pas un avertissement, c'est une erreur. Diagnostic requis de toute implementation conforme.
Désolé mais non : diagnostic requis signifie seulement que le compilateur _doit_ émettre un message, cela ne signifie pas qu'il doit refuser de créer le fichier objet (ce qui constitue la seule différence réelle entre un avertissement et une erreur non fatale sur la plupart des compilateurs). Donc émettre un avertissement est un diagnostic valable au sens de la norme.
Dans le genre, tu as en particulier les options '-pedantic', dont l'unique objet est d'émettre les diagnostics requis par la norme, alors même que les concepteurs du compilateur considèrent (à tort ou à raison, c'est un autre débat) que le dit diagnostic est inutile : donc ils marquent le diagnostic du sceau supposé infamant de la pédanterie, mais vont rarement jusqu'à refuser de compiler le dit programme.
Ou alors il faudrait plutôt utiliser '-pedantic-error' ou '-Wx' mais ces derniers ne sont PAS requis pour être conformes à la norme.