Bonjour,

Voici un bout de code issu d'une boucle censée récupérer toutes les options et arguments d'options passés sur la ligne de commande. Ce case appartient à l'argument de l'option -p qui doit être un entier de valeur maximale égale au nombre d'entiers que peut comporter un unsigned long long.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
			case 'p':
				char *endptr;
				print_interval_nbr_powers = strtol(optarg, &endptr, 10);
				if (*endptr != '\0' || print_interval_nbr_powers < 0 || print_interval_nbr_powers > MAX_LEN_UNSIGNED_LONG_LONG)
				{
					fprintf(stderr, "Invalid print interval \"%d\". \n", print_interval_nbr_powers);
					opterr++;
				}
				break;
Cependant, voici ce que GCC me dit à la compilation :
In function 'main':
error: expected expression before 'char'
error: 'endptr' undeclared (first use in this function)
error: (Each undeclared identifier is reported only once
error: for each function it appears in.)
Visiblement c'est la déclaration de mon char * sur la première ligne du case qui le dérange, si je mets une instruction bidonne juste avant, ça passe ! Quelqu'un a-t-il une explication quant à ce comportement ?

Merci.