Поскольку другие показали, можно переопределить добавить/удалить свойства события. С другой стороны, можно хотеть угробить событие и просто иметь класс, берут делегата в качестве аргумента в его конструкторе (или некоторый другой метод), и вместо того, чтобы запустить событие, звонят предоставленному делегату.
События подразумевают, что любой может подписаться на них, тогда как делегат один метод, который можно передать классу. Вероятно, будет менее удивительным пользователю Вашей библиотеки тогда, если Вы только будете использовать события, когда Вы на самом деле wnat one-many семантика она обычно предлагает.
Самое простое решение - это # включить test1.c и test2.c в library_api.c
и скомпилировать только этот файл. Затем вы можете сделать test1 () и test2 () статическими.
В качестве альтернативы вы можете объединить объектные файлы с помощью ld -r
и использовать objcopy --localize-symbols
для сделайте тестовые функции статическими после компоновки. Поскольку это может быть довольно утомительно, я действительно рекомендую первый вариант.
ld имеет параметр
- сохранить-файл-символов ФАЙЛ Сохранять только символы, перечисленные в ФАЙЛЕ
, чтобы вы могли явно называть символы, которые вы хотите держать.