Может ли ANSI C-совместимая реализация включать дополнительные функции в свою стандартную библиотеку?

Разрешено ли ANSI C-совместимой реализации включать в свою стандартную библиотеку дополнительные типы и функции, помимо перечисленных в стандарте? (Идеальный ответ будет ссылаться на соответствующую часть стандарт ANSI.)

Я спрашиваю особенно, потому что Mac OS 10.7 объявляет функцию getline в stdio.h, даже при компиляции с помощью gcc или clang с использованием флага -ansi . нарушает работу нескольких старых программ, которые определяют свою собственную функцию getline . Является ли это ошибкой Mac OS 10.7? (На странице руководства для getline в Mac OS 10.7 указано, что getline ] соответствует стандарту POSIX.1, который появился в 2008 году.)

Edit: Для пояснения, я считаю странным, что включение stdio.h в программу ANSI C89 в Mac OS 10.7 также включает объявление для getline , поскольку getline не является одной из функций, перечисленных в K&R (и предварительно в целом ANSI) описание stdio.h. В частности, попытка скомпилировать noweb :

gcc -ansi -pedantic    -c -o notangle.o notangle.c
In file included from notangle.nw:28:
getline.h:4: error: conflicting types for ‘getline’
/usr/include/stdio.h:449: error: previous declaration of ‘getline’ was here

Является ли это ошибкой в ​​Mac OS 10.7, включает объявление getline в stdio.h даже при компиляции для стандарта ANSI C89?

9
задан Brad Larsen 11 September 2011 в 14:56
поделиться