Messages in this thread | | | Date | Mon, 11 Aug 2003 02:04:10 +0100 | From | Jamie Lokier <> | Subject | Re: NULL. Again. (was Re: [PATCH] 2.4.22pre10: {,un}likely_p()) |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |