[Python-Dev] ANSIfication again ;)

Sjoerd Mullender sjoerd@oratrix.nl
Tue, 25 Jul 2000 16:27:18 +0200

On Thu, Jul 20 2000 Thomas Wouters wrote:

> I just went over all of the Python source, using this little program
> (which I called findkrc.py):
> import sys, string
> for file in sys.argv[1:]
> 	d = open(file).read()
> 	if string.find(d, ";\n{") <> -1 or string.find(d, "()\n{") <> -1:
> 		print file
> (using find -name '*.[ch]' -print | xargs ./findkrc.py)
> And I fixed almost all of the instances of K&R C syntax. However, I found a
> lot of instances of the 2nd type: empty argument list. However, as far as I
> remember, ANSI C states that should be written as '(void)'. Is that a
> non-issue, and should I not bother fixing those ? (Most of the files in
> Modules/ has one or more instances of those.)

There is a difference between a function *declaration* and a function

The former, a function declaration, tells the compiler, this is the
type of the function (and its arguments).  In a function declaration
it is useful to make the distinction between "no arguments" and
"unknown arguments".  This is done by using the "void" keyword.
	int foo();
means that there is a function named "foo" that returns an int and
with unknown arguments.
	int bar(void);
means that there is a function named "bar" that returns an int and
that doesn't take any arguments.

However in a function definition you *must* specify the arguments.  So
if you define a function
	int foo()
it is clear that foo doesn't have any arguments.  There is no
difference with
	int foo(void)

-- Sjoerd Mullender <sjoerd.mullender@oratrix.com>