Является ли законным переслать декларацию структур и функций, предоставляемых библиотекой стандартного языка C?Вперед объявить объекты в стандартной библиотеке C?
Мой фон - C++, в котором ответ отрицательный. Основная причина этого заключается в том, что структура или класс, предусмотренные стандартной библиотекой C++, могут быть шаблоном за кулисами и могут иметь «секретные» параметры шаблона и поэтому не могут быть правильно объявлены наивным объявлением без шаблона. Даже если пользователь точно определяет, как перенаправить объявление определенного объекта в конкретную версию конкретной реализации, реализация не обязана не нарушать это объявление в будущих версиях.
Я не имею копию любого стандарта C под рукой, но, очевидно, нет шаблонов в C.
Так это законно направить объявить объекты в стандартной библиотеке C?
Другая причина, по которой объекты в стандартной библиотеке C++ не могут быть объявлены в пересылке, заключается в том, что заголовки, предоставленные реализацией, не должны следовать нормальным правилам. Например, в недавнем вопросе я спросил, должен ли заголовок C++, предоставленный реализацией, быть фактическим файлом, а ответ - нет. Я не знаю, если какой-либо из этого относится к С.
Стандартная библиотека C используется как C и C++, но на этот вопрос я спрашиваю только о С.
Да, вы можете переадресовать объявлять функции и структуры в C. Вы можете сделать свой компилятор знает, что есть определение где-то и просто объявления в файле заголовка – Gopi
AFAIK, вы, конечно, можете переадресовать объявить 'стандарт C' библиотечные функции, тем самым устраняя требование включения соответствующего файла заголовка, но думаю, что это не _recommended._ –
@SouravGhosh Вещи, которые не рекомендуются, но обычно работают, это те смешные крайние случаи языковой адвокации, о которых я прошу! – Praxeolitic