C - gcc: keine Compilerwarnung bei abweichender Funktionsdeklaration / Implementierung

Ich versuche herauszufinden, warum mein C-Compiler mir keine Warnung / Fehler mit folgendem (vereinfachtem) Code ausgibt.

Die Funktionsdeklaration hat keine Parameter, während die Funktionsimplementierung Parameter hat:

some.h:

void foo();

some.c:

static uint32_t count = 0; 

void foo(uint32_t num) {
    count += num;
    print("Count: %u");
}

Haupt c

foo(100);
foo();

Ausgabe

Count: 100
Count: 100

Compiler für Zielerstellung:

gcc-arm-none-eabi-4_9-2015q1-20150306-win32

Linker für Zielerstellung:

gcc-arm-none-eabi-4_9-2015q1-20150306-win32

Compiler-Flags:

-Wall -Werror -DuECC_CURVE=uECC_secp256r1 -DMEMORY_CHECK -DDEBUG -Os -g3 -DBACKTRACE

Antworten auf die Frage(4)

Ihre Antwort auf die Frage