Re: zero-as-null-pointer-constant C++ trunk

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 22 May 2019 at 15:28, David Brown wrote:
>
> On 22/05/2019 16:12, Jonny Grant wrote:
> > Hello
> >
> > This is a little test case. It is not real code.
> >
> > We used gcc-8 to get some warnings, but on the godbolt trunk gcc doesn't
> > those warnings with this little test case. Am I missing something
> > obvious? Is this an issue?
> >
>
> The warning is for treating 0 as a null pointer, but you are not doing
> that - you are using NULL as a null pointer.

Right.

> The whole point of nullptr is to have a way to give a null pointer that
> matches function overloads of pointer type rather than overloads of
> integer type:
>
> int foo(void*) { return 1; }
> int foo(int) { return 2; }
>
> Calling "foo(0)" will give you 2, which is not the result you want if
> you are wanting a null pointer.  Calling "foo(nullptr)" will give you 1,
> which is the sensible result.  Calling "foo(NULL)" will give you an
> error about ambiguous overloads.

That's only because NULL is defined as __null, which is equivalent to
0L. It could equally be defined as 0 and then would be identical to
foo(0).

But the point is that "NULL" is not an integer literal (even if it
expands to one), it's a name for a null pointer. It's not as good a
name as "nullptr" but it's still not a literal zero.


> That is perhaps not great, but it will
> certainly avoid a quite error in the code.  So there is no need for this
> warning to trigger on the use of NULL for a null pointer.
>
> (This is just my opinion as a user.)



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux