Вы уверены, что когда вы пишете содержимое макросов вручную, вы пишете код, точно такой же, как код, создаваемый расширением макросов?
Мне кажется, что SIGNAL_MACRO объявляет функцию testSignal()
, но не определяет ее, то есть функция не имеет тела, что, безусловно, приведет к вашей ошибке видя.
Тем не менее, по вашему коду трудно сказать, потому что использование макросов усложняет задачу. Я бы посоветовал вам не использовать макросы таким образом, потому что это делает код очень трудным для чтения и понимания.