I am having trouble in understanding why gcc cannot differentiate between the following functions:
void a(int* p);
void a(void);
int* a(int p);
void a(int* p){}
void a(void){}
int* a(int p) {return (void*)0;}
During compilation "error: conflicting types for ‘a’" and "note: previous declaration was here" errors are being returned.