我正在使用nullptr
,因为它很方便,使我的代码更具可读性。但是编译器在下面给出了错误。
我的问题是必须包含头文件才能解决问题。
这是一段代码:
FILE *fptr;
fptr=fopen("E:\\text.txt","w");
if(fptr==nullptr)
{
perror("open()");
return EXIT_FAILURE;
}
错误
||=== Build: Debug in 1 (compiler: GNU GCC Compiler) ===|
E:\COOP\1\main.c||In function 'main':|
E:\COOP\1\main.c|12|error: 'nullptr' undeclared (first use in this function)|
E:\COOP\1\main.c|12|note: each undeclared identifier is reported only once for each function it appears in|
E:\COOP\1\main.c|27|error: expected declaration specifiers or '...' before
答案 0 :(得分:2)
nullptr
is C++ only;在C中不需要它,因为在C ((void*)0)
中可以转换为任何其他没有强制转换的指针类型。
如果您真的非常想在C中键入nullptr
,可以使用
#define nullptr ((void*)0)
然后它的工作方式基本相同。
请注意,C具有来自<stddef.h>
的{{3}}宏;它也是可读的,但它的扩展是实现定义的,所以它可能是((void*)0)
或0
(或者非常奇怪的东西);如果它扩展到0
,您将无法从
int a = NULL;