Remember the parentheses!

First, a simple example of how function pointers can cause difficult to notice bugs in your code. A global function called get_status performs various validation actions to determine if the state of the system is valid. The function returns a value of zero to mean that the system state is valid and values over zero are error codes:

    // values over zero are error codes 
int get_status()
{
int status = 0;
// code that checks the state of data is valid
return status;
}

The code could be called like this:

    if (get_status > 0) 
{
cout << "system state is invalid" << endl;
}

This is an error because the developer has missed off the (), so the compiler does not treat this as a function call. Instead, it treats this as a test of the memory address of the function, and since the function will never be located at a memory address of zero, the comparison will always be true and the message will be printed even if the system state is valid.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset