Если вы поместите подчиненную функцию в библиотеку и свяжете ее с объектным файлом вышестоящей функции и этой библиотекой, компоновщик проигнорирует подчиненную функцию.
Редактировать:
Этоis "so1.c":
#include <stdio.h>
void f(void) {
puts("One.");
}
Это "so2.c":
#include <stdio.h>
void f(void) {
puts("2!");
}
Это "som.c" (объявление f()
могло бытьв дополнительном заголовочном файле):
void f(void);
int main(void) {
f();
return 0;
}
Это команда для проверки этого:
clang -c so1.c -o so1.o
clang -c so2.c -o so2.o
clang -c som.c -o som.o
ar r so1.lib so1.o
ar r so2.lib so2.o
clang so1.o so2.o som.o -o so12
clang so1.lib so2.o som.o -o so_2
clang so1.o so2.lib som.o -o so1_
so_2
so1_
Строка clang so1.o so2.o som.o -o so12
не связывается и выдает ошибку, как и ожидалось.
Оба исполняемых файла работают должным образом.