Collegamento della funzione inline

Non riesco a dare un senso al seguente comportamento: un’intestazione con alcuni tipi di base e un’altra intestazione in cui utilizzo questi tipi in diverse funzioni. Successivamente ho iniziato a build classi basate sui miei tipi e funzioni definiti. Nell’intestazione della funzione se lascio la seguente firma:

void whateverFunction(parameters) 

Il linker sottolinea che ci sono più definizioni di WhateverFunction. Ora se lo cambia in:

 inline void whateverFunction(parameters) 

il problema del collegamento è andato e tutti compila e collega bene. Quello che so riguardo in linea è che sostituisce ogni chiamata di funzione con il suo codice diverso da quello che è piuttosto scuro, quindi la mia domanda è:

In che modo il linker tratta le funzioni inline in C ++?