The previous answers are quite correct, but I'm linking to David Tribble's excellent page as it gives a great explanation on this and many other issues.
The highlights:
C distinguishes between a function
declared with an empty parameter list
and a function declared with a
parameter list consisting of only
void. The former is an unprototyped
function taking an unspecified number
of arguments, while the latter is a
prototyped function taking no
arguments.
C++, on the other hand, makes no
distinction between the two
declarations and considers them both
to mean a function taking no
arguments.
For code that is intended to be
compiled as either C or C++, the best
solution to this problem is to always
declare functions taking no parameters
with an explicit void prototype.
Empty function prototypes are a
deprecated feature in C99 (as they
were in C89).
It's perhaps worth noting that the func(void) syntax is not deprecated in C++, but it's commonly considered more of a C-style idiom. I think most C++ programmers I've run across prefer the empty parameter list.
A quote from the C++ standard, section 8.3.5, paragraph 2:
"If the parameter-declaration-clause is empty, the function takes no arguments. The parameter list (void) is equivalent to the empty parameter list. Except for this special case, void shall not be a parameter type (though types derived from void, such as void*, can)."
There's no mention that either form is deprecated. Thanks again to Mr. Tribble's excellent website for pointing me to the correct section of the standard.