Bug?!

Iniciado por fpissarra, 09 de Novembro de 2010, 15:20

tópico anterior - próximo tópico

fpissarra

Topei com isso, que parece um pequeno bug no gcc. Antes, deixem-me explicar que estou escrevendo um carregador de arquivos no formato Wavefront .obj em C. Quando fui tentar ler as coordenadas de vértices topei com essa surpresa.

Aparentemente algumas funções "intrínsecas" não funcionam bem se o respectivo cabeçalho não for incluído (fazendo com as funções deixem de ser "intrínsecas"!):

#include <stdio.h>

void f(void)
{
  float x;

  x = atof("1.000");
  printf("%f\n", x);
}


A função acima imprimirá "0.000000" ao invés de "1.000000".

Mas, se incluir stdlib.h:

#include <stdio.h>
#include <stdlib.h>

void f(void)
{
  float x;

  x = atof("1.000");
  printf("%f\n", x);
}


Então imprimirá "1.000000" - que é o correto!

Alguém mais percebe esse bug por ai?

A versão do GCC em uso é a 4.4.5:

$ gcc --version
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Darcamo

Realmente parece um bug.
Testei aqui e obtive o mesmo resultado (mesma versão do gcc, instalação de 64bits, se é que faz alguma diferença).

O correto seria ele reclamar que não conhece a função atof caso a stdlib não seja incluída.