The following code fragments show several function declarations (or prototypes). The first declares a function f that takes two integer arguments and has a return type of void:
void f(int, int);
This fragment declares a pointer p1 to a function that takes a pointer to a constant character and returns an integer:
int (*p1) (const char*);
The following code fragment declares a function f1 that takes an integer argument, and returns a pointer to a function that takes an integer argument and returns an integer:
int (*f1(int)) (int);
Alternatively, a typedef can be used for the complicated return type of function f1:
typedef int f1_return_type(int);
f1_return_type* f1(int);
The following declaration is of an external function f2 that takes a constant integer as its first argument, can have a variable number and variable types of other arguments, and returns type int.
int extern f2(const int, ...); /* C version */
int extern f2(const int ...); // C++ version
Function f6 is a const class member function of class X, takes no arguments, and has a return type of int:
class X
{
public:
int f6() const;
};
Function f4 takes no arguments, has return type void, and can throw class objects of types X and Y.
class X;
class Y;
// ...
void f4() throw(X,Y);