Autor Tópico: Bug?!  (Lida 1601 vezes)

Offline fpissarra

  • Usuário Ubuntu
  • *
  • Mensagens: 246
    • Ver perfil
    • Lost in the e-Jungle
Bug?!
« Online: 09 de Novembro de 2010, 15:20 »
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"!):

Código: [Selecionar]
#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:

Código: [Selecionar]
#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:

Código: [Selecionar]
$ 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

  • Visitante
Re: Bug?!
« Resposta #1 Online: 09 de Novembro de 2010, 19:11 »
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.