Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么C中未声明nullptr?_C_Pointers_Gcc - Fatal编程技术网

为什么C中未声明nullptr?

为什么C中未声明nullptr?,c,pointers,gcc,C,Pointers,Gcc,我使用nullptr是因为它很方便,并且使我的代码更可读。但是编译器给了我下面的错误 我的问题是,为了解决这个问题,必须包含哪些头文件 下面是一段代码: FILE *fptr; fptr=fopen("E:\\text.txt","w"); if(fptr==nullptr) { perror("open()"); return EXIT_FAILURE; } 错误 );在C中不需要它,因为在C中void*0可以转换为任何其他指针类型,而无需强制转换 如果您确实喜欢在C中键入nu

我使用nullptr是因为它很方便,并且使我的代码更可读。但是编译器给了我下面的错误

我的问题是,为了解决这个问题,必须包含哪些头文件

下面是一段代码:

FILE *fptr;
fptr=fopen("E:\\text.txt","w");
if(fptr==nullptr)
{
   perror("open()");
   return  EXIT_FAILURE;
}
错误

);在C中不需要它,因为在C中void*0可以转换为任何其他指针类型,而无需强制转换

如果您确实喜欢在C中键入nullptr,那么可以使用

#define nullptr ((void*)0)
然后它的工作原理基本相同

请注意,C具有来自的宏;它也是可读的,但是它的扩展是由实现定义的,所以它可能是void*0或0,或者是一些非常奇怪的东西;如果它扩展为0,您将无法从中获得任何诊断

int a = NULL;

C没有nullptr关键字或别名。它只存在于C++中。@ CEID:你的IDE在把C++语言带到C代码中是很淘气的。然后,CodeBlocks中似乎有一个bug,因为它不区分C和C++源。如果您键入ne,IDE是否尝试用另一个仅限C++的新关键字替换它?如果是这样的话,那么问题很可能是一般性的,而不仅仅是一个或几个关键字。不要对它感到舒服!如果IDE具有自动补全功能,可以自动补全错误语言中的标识符和关键字,您怎么会感到舒服呢。接下来呢??我会去报告它的错误。他们确实需要分离C和C++。但是NULL必须在C++中定义为0,这会导致Null PPTR的模糊性。@ StutyTeLeT实际上不会在C++中定义空NulLPTR工作。@ CEEKER——而且,正如我喜欢NulLPTR作为一个概念一样,如果您希望C代码是习惯用法的话,您必须使用NULL。@ AnttiHaapala——它会起作用。但它是一个用别名表示关键字的宏,哎呀。对于void*0,它可以转换为任何其他指针类型,而无需强制转换。-我怀疑这是否适用于函数指针。
int a = NULL;