Lo scrivo sperando che possa essere d'aiuto a qualcun altro. La questione era più semplice di quanto non pensassi, ho risolto utilizzando questa semplice macro:

codice:
#define FACT(X) int k=X, i; for(i=1; i<X;i++) {k *= i;} printf("%d\n", k);