Я читал о флагах, используемых в gcc, и прочитал рекомендацию использовать gcc -ansi -pedantic -Wall file1 [file2 [file3...]] -o output
. Ради качества моего кода, чтобы он был стандартным и получил все предупреждения об этом.
Ну, насчет компиляции с -ansi ...
Если я включу <stdlib.h>
, gcc выдаст мне эту ошибку:
In file included from ansi.c:2:
C:/c/bin/../lib/gcc/mingw32/3.4.5/../../../../include/stdlib.h:317: error: syntax error before "double"
Эта строка в этом:
inline double __cdecl __MINGW_NOTHROW strtod (const char* __restrict__ __nptr, char** __restrict__ __endptr)
{ return __strtod(__nptr, __endptr); }
inline
не существует в C? Разве «стандартный» заголовок не должен быть стандартным? Должен ли я просто удалить inline или избежать компиляции с помощью stdlib.h (я не могу вспомнить, что сейчас находится в stdlib)?
Обновление
прочитав ссылку, которую разместил Адам, я обнаружил, что "inline" не является ключевым словом в C89, а C89 - это то, что обеспечивается переключателем -ansi. Мне пришлось изменить его на __inline__
, который, я полагаю, является макросом MinGW.
Спасибо за помощь.