После того, как аргументы для вызова макроса, подобного функции, были идентифицированы, происходит подстановка аргументов. Параметр в списке замены, если не предшествуют # или ## предварительной обработкой маркера или сопровождаемое ## предварительная обработка маркера (см ниже), заменяются на соответствующий аргумент после того, как все содержащиеся в нем макросы были расширены. Перед заменой токены предварительной обработки каждого аргумента полностью заменяются макросом, как если бы они сформировали остальную часть файла предварительной обработки; другие токены предварительной обработки недоступны.