There is a significant difference between C and C++ for functions with empty argument lists. In C, the declaration:
int func2();
means “a function with any number and type of argument.” This prevents type-checking, so in C++ it means “a function with no arguments.”