[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
*definition*.

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.
So 
	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>