2011-12-31 94 views
1

简单地说:为什么C++ 0X/C++ 11标准中的nullptr关键字是小写字母,而其密切伴侣NULL是大写字母?我确实意识到两者遵循不同的标准; nullptr是一个关键字,而NULL是一个宏。但是由于它们将用于类似的情况,如果他们遵循相同的惯例,新用户会不会更清楚?为什么C++ 11中的nullptr小写?

(不,它是太多的麻烦要记住 - 我只是好奇的设计决定)

+12

您已回答了您的问题。一个是关键字,另一个是宏。 – Mat 2011-12-31 13:50:26

+1

我不知道,它需要比'nullptr'清楚多少? 'NULL_POINTER'? :) – jrok 2011-12-31 13:50:44

+2

@jrok'POINTER_WHOSE_VALUE_IS_ZERO' – 2011-12-31 13:51:59

回答

4

小写明显符合C++的一般命名约定。使用全部大写不会帮助完全帮助用户。

而且我不认为它实际上是所有有助于与谁通过在C NULL长大了(或正在谁使用NULL代替0 C++用户的上限)的用户。

当然,在这种情况下,我没有看到任何违背命名约定的理由。

12

NULL是一个宏,一个共同的约定是,宏是大写,而nullptr不一个宏,但是一个关键字,与其他所有关键字一样小写。

但是,由于它们将用于类似的情况,如果他们遵循相同的约定,新用户会不会更清楚?

混乱的潜在来源将改变,别人会问,为什么一个关键字(假设NULLPTR,作为null将打破语言向后兼容)

3

好吧,我编辑我原来的答复大写因为我误解了这个问题。由于相同的原因,真假关键字是小写字母,我将声明它是小写字母。

+5

'nullptr'不是一个类型,而是一个关键字,'nullptr_t'是类型。 – 2011-12-31 13:52:21

+0

呃!是的,我正在读它作为_t和意义_t。我现在闭嘴。 – Spencer 2011-12-31 13:55:46

+0

@SpencerWinger,欢迎来到Stack Overflow!请注意,您可以编辑您的答案以使其正确。这样你就可以避免不必要的赞誉,并最终可以获得赞誉和声誉。 – avakar 2011-12-31 14:17:45

相关问题