[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: GCC генерирует неправильный код?



On Sun, Mar 14, 2010 at 10:21:54AM +0200, globus wrote:
> 
> Писал примитивную програмку на Си, курсач для знакомой, но это не важно. Есть
> там кусок кода, который читает записи из файла: первая строка -- количество
> записей, последующие -- собственно "полезные" записи.
> 
> Вот кусок кода:
> 
> 	size_t n /*= 0*/;
> 	/* тут пропущены проверки переданных в ф-ю параметров */
> 	fscanf(f, "%u", &n);
> printf("n==%u\n", n); /* для отладки */
> 	if ((n > K_MAX_ITEMS) || (n == 0))
> 	{
> printf("ERROR: n==%u\n", n); /* тжс */
> 		*error = K_BAD_SIZE;
> 		goto quit;
> 	}
> 
> 	if ((stab = malloc(n * sizeof(Stab))) == NULL)

[skipped]

> Виноват ли gcc-4.3.real (Debian 4.3.2-1.1) 4.3.2, или что-то другое?

Виноват программист, не понимающий разницы между unsigned int и size_t.

-- 
Stanislav


Reply to: