Bonsoir !
Patrick Dupré a écrit :
> avec les case: Il faut les mettre entre { } en g++
C'est pas vrai.
> De meme avec les inline
> #define min(a, b) (a < b ? a : b)
> qui ne passe pas en g++
Pas vrai non plus.
Exemple :
#define min(a, b) (a < b ? a : b)
volatile char c;
int main() {
int i;
switch (c) {
case 'S': i = 0; break;
default: i = 1; break;
}
return min(i, c);
}
Ça compile sans warnings avec `-O2 -Wall -Wextra`.
Par contre, ta macro comporte deux pièges. Regarde ce qu'elle donne si
tu évalues :
min(toto & 0xff, tata++)
Ce que je te suggère : à partir du code qui pose problème, essaye
d'identifier le passage problématique, isole-le dans un exemple
minimaliste, et *vérifie* que le problème existe toujours dans cet
exemple. Il faut toujours vérifier, sinon tu fais des suppositions et,
comme tu le constates ici, elles peuvent très bien être fausses.
Une fois que tu as cet exemple minimaliste *et vérifié*, tu peux
demander de l'aide, ici ou ailleurs, *en postant l'exemple* !
Mais avant toute chose, il faut lire ça :
How to create a Minimal, Reproducible Example
https://stackoverflow.com/help/minimal-reproducible-example
Bonne soirée !
Edgar.