[gcc] !@#$ компилятор, где strtof ?!
CONFORMING TO
C89 describes strtod C99 describes the other two functions.
так я понял, что проблема не в том, что компилятор/линковщик не нашли функции, а в том, что какую-то функцию вставили, которая ерунду вернула. Нет?
- если проблемы с компилятором, то всех интересует версия компилятора, а не операционки;
- не поверишь, у gcc есть пользовательская документация!
Начал переносить под Линукс, все сразу разломалось... вот и негодую
quad ~/tmp/flocal/test $ gcc -Wall a.c-Wall наверное не просто так придумали
a.c: В функции ‘main’:
a.c:8: предупреждение: неявная декларация функции ‘strtof’
quad ~/tmp/flocal/test $ gcc -Wall --std=c99 a.c
quad ~/tmp/flocal/test $
Да! Если бы он сказал "не знаю такой функции", я бы все понял и начал бы искать куда эта функция делась. А здесь он ни на что не ругается, просто неправильно работает.
Судя по инету, народ начал на это жаловаться еще с gcc 3.3
---
"This user is BSD-compliant."
в инете нашел, что если компилировать с --std=c99, то все работает. Но каким образом надо догадаться об этомВ теории дела обстоят так:
Ты используешь функцию, которая описана в стандарте C99, об этом ты должен знать. Как пользоваться компилятором ты тоже должен знать.
Оставить комментарий
Sharp
Есть код:Если поменять функцию strtof, на strtod, то все отлично работает.
p.s.
uname -ar
Linux t34 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux
p.p.s.
в инете нашел, что если компилировать с --std=c99, то все работает. Но каким образом надо догадаться об этом, и какие "грабли" меня ожидают впереди, для меня пока загадка.