Credo che solo dall'Ansi C99/C++ in poi puoi definire le variabili dove vuoi...nel C standard le devi definire sempre prima di qualsiasi istruzione di un blocco di codice. Se sposti la printf dopo la definizione di c, nvocals etc nessun problema.
Quindi probabilmente i compilatori che usi non accettano tale estensione. Se però rinomimi il file in .cpp dovrebbe compilare in entrambi i modi (in somma...gli dici che quello è un file C++ e non C).