Иногда встречаются опции компилятора, которые позволяют видеть вывод пропроцессора операторов. Если нет, то всегда есть godbolt , в котором вы можете использовать опцию -E
с gcc
компилятором, чтобы увидеть (новая строка добавлена мной):
extern "C" int coreclr_shutdown(void* hostHandle, unsigned int domainId);
typedef int (*coreclr_shutdown_ptr)(void* hostHandle, unsigned int domainId)
##
в раскрытии макроса означает конкатенацию. Таким образом, function ## _ptr
означает объединение строки за function
(это аргумент макроса) со строкой (литерал) _ptr
. Как правило, например:
#define CONCAT(a,b) a ## b
CONCAT(abc, def) // will be translated by preprocessor into abcdef