Re: NULL. Again. (was Re: [PATCH] 2.4.22pre10: {,un}likely_p())
From: Jamie Lokier
Date: Sun Aug 10 2003 - 20:15:56 EST
Sean Neakums wrote:
> I had thought that the need for writing NULL where a pointer is
> expected in varags functions was because the machine may have
> different sizes for pointers and int. In the case of the second
> printf call above, if pointers are 64-bit and integers are 32-bit,
> printf will read eight bytes from the stack, and only four will have
> been occupied by the integer 0.
It is incorrect to write NULL as a varargs argument. It won't
necessarily pass a pointer because:
1. a valid definition of NULL is "0".
If you want to pass a pointer to varargs, you might have considered
writing "(void *) 0", but that doesn't work because:
2. a machine may have different sizes for different pointer types.
You must write "(type) 0" or "(type) NULL", using the correct pointer type.
-- Jamie
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/