C не поддерживает перегрузку функций - которая является типом специального полиморфизма , основанной на типах времени компиляции, - а также множественную диспетчеризацию (то есть перегрузку, основанную на типах времени выполнения).
Чтобы симулировать перегрузку функций в C, вам нужно создать несколько функций с разными именами. Имена функций часто содержат информацию о типе, например, fputc()
для символов и fputs()
для строк.
Множественная диспетчеризация может быть реализована с помощью переменных макросов. Опять же, задача программиста - предоставить информацию о типе, но на этот раз с помощью дополнительного аргумента, который будет оцениваться во время выполнения - в отличие от имени функции времени компиляции в случае подхода, описанного выше. Семейство функций printf()
может быть не лучшим примером для множественной отправки, но сейчас я не могу придумать лучшего.
Существуют и другие подходы к множественной диспетчеризации с использованием указателей вместо функций с переменным значением или переноса значений в структурах для предоставления аннотаций типов.