C言語(gcc?)の謎の振舞い

0引数の関数に、引数を渡して呼び出していても、コンパイルエラーを吐かない。なんでだろう。

マルチスレッドなプログラムを書いていて、謎のバグに悩まされており、0引数の関数に引数を1つ渡している(APIを変えたときに更新しわすれた)ところを発見して、それを消したらうまく動くようになったやっぱ動かなかった。あうあう

検証用コード。hogeを0引数で定義しているのに、 gcc -Wall でコンパイルしてもエラーがでない。

#include <stdio.h>
#include <stdint.h>

void * hoge(){
    return NULL;
}

int main(int argc, char * argv[]){
    hoge(100);
    printf("%d %d\n", (int)sizeof(int32_t), (int)sizeof(intptr_t));
    return 0;
}

これって有名な振舞い?なんでエラーにならないんだろ。