Предположим, у меня есть файл заголовка abc.h
, который определяет функцию foo()
. Как я могу использовать функцию foo()
в файле заголовка abc.h
без использования #include<abc.h>
в моей программе?Как использовать функцию из файла заголовка без включения заголовка в C?
я мог придумать со следующими растворами
- Копирование функции из заголовочного файла в программу вручную. Но это не удастся для большинства случаев, когда определение функции было предварительно скомпилировано в объектные файлы. Поскольку в этом случае прототип прототипа копирования не будет полезен, потому что неразрешенные ссылки на функцию не могут быть разрешены.
- Не делайте ничего в случае стандартных библиотек, поскольку IDE может позаботиться об этом. Но это явно неопределенное поведение и будет зависеть от IDE. Также для нестандартных библиотек он наверняка потерпит неудачу.
Как я могу использовать функцию в файле заголовка (не обязательно из стандартной библиотеки) без включения файла заголовка?
Это был вопрос интервью, поэтому это, по сути, вопрос об уловке. Не реальное использование.
«это не удастся для большинства случаев, когда заголовок был предварительно скомпилирован в объектные файлы» - я не уверен, что это значит. Объявление функции с помощью '# include' совпадает с объявлением функции в исходном файле. –
Почему именно вы хотите использовать функцию из файла заголовка, фактически не включив его? –
Вы не можете. Если бы вы могли, то нет необходимости включать какие-либо файлы заголовков. Единственный способ - копировать и вставлять, но тогда вы также можете использовать '# include' – inixsoftware