#include double f( char *s ) // f has return type double { printf("%s\n", s); return (1); } int g( char *s ) // g has different return value { printf("%s\n", s); return (1); } /* ---------------------------------------------------------------- run has a function parameter of the form: void h( char * ) Function f matches this function parameter declaration Function g does NOT match this function parameter declaration ---------------------------------------------------------------- */ void run( double h( char * ), char *a ) { h(a); } int main( int argc, char *argv[] ) { run( f, "Hello" ); run( g, "Hello" ); // Error: argument 1 has wrong type !!! }