Мне интересно, почему это скомпилируется:
int test();
int main() { return test((void*)0x1234); }
int test(void* data) { return 0; }
Почему компилятор не выдаст никаких ошибок/предупреждений об этом (я пробовал clang, gcc)? Если я изменю возвращаемое значение, оно не будет компилироваться, но аргументы могут отличаться?!