tl;dr: use void.
Given the backward compatibility in C++, and the bit of ambiguity identified below, I assert that we go all the way back to KnR and ANSI C for a conclusive answer:
int getline(void);
int copy(void)
Since the specialized versions of getline and copy have no arguments,
logic would suggest that their prototypes at the beginning of the file
should be getline() and copy(). But for compatibility with
older C programs the standard takes an empty list as an old-style
declaration, and turns off all argument list checking; the word
void must be used for an explicitly empty list.
[Kernighan & Richie, the C programming language, 1988, Pgs 32-33]
and..
The special meaning of the empty argument list is intended to permit
older C programs to compile with new compilers. But it's a bad idea to
use it with new programs. If the function takes arguments, declare
them; if it takes no arguments, use void [ibid, Pg. 73]
EDIT: Broke the rest into a separate discussion here:
Does specifying the use of void in the declaration of a function that takes no arguments address The Most Vexing Parse?