Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on Why not call nullptr NULL?

Parent

Why not call nullptr NULL?

+9
−0

In C++11 the nullptr keyword was added as a more type safe null pointer constant, since the previous common definition of NULL as 0 has some problems.

Why did the standards committee choose not to call the new null pointer constant NULL, or declare that NULL should be #defined to nullptr?

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

Post
+0
−0

Probably just backwards compatibility with past C++ versions, where NULL = 0.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

2 comment threads

C++'s NULL is broken; not C (4 comments)
However when it comes to NULL, C and C++ already differ in that C allows NULL to be defined as ((void... (1 comment)
C++'s NULL is broken; not C
alx‭ wrote 2 months ago

C++ has a broken definition of NULL as 0, which is a consequence of breaking the semantics of void * by not allowing implicit conversions from it to any other pointer.

C doesn't have that problem. And in fact, POSIX requires that NULL be defined as "the value 0 cast to type void *", which is followed by all C implementations that I know.

Only the most horrible C implementations would define NULL to 0. And I don't know any of them.

The rationale for the addition of nullptr was rather an unjustified fear of the C standard committee (WG14) of annoying some proprietary C implementation that was stubborn and noisy enough to complain about it, combined with the feeling of C++ programmers that are members of WG14 that C should adapt to C++ to make it easier for them to reuse C code.

Iizuki‭ wrote 2 months ago

You seem to know way more about this than I do. Go ahead and edit this answer (or just post another one)

alx‭ wrote 2 months ago

Makes sense, I will write one. :)

Lundin‭ wrote 2 months ago · edited 2 months ago

alx‭ C is still flawed. There's the definition of a null pointer constant in C, which is clear. And then there's an ambiguous part regarding the NULL macro saying "...NULL which expands to an implementation-defined null pointer constant;". I think the intention was to say it is implementation-defined whether 0 or (void*) was used (or 0ULL etc). But the maintainers of Death Station 9000 may read that as "ok we are free to do #define NULL 1". This ambiguous state of things is what I think Stroustrup's main criticism against C was about back in the days when he defined null pointers in C++. And not the 0 vs (void*)0 part. Related: What's the difference between null pointers and NULL?