【发布时间】:2016-08-12 09:04:42
【问题描述】:
这个网站上有几个关于这个问题的问题和回答。我尝试了给出的答案(包括头文件),它们并没有解决我的问题。
我将我的项目从 VS2013 迁移到 VS2015。编译后出现错误:“C2065 'NULL': undeclared identifier”。这在 VS2013 中没有发生。当我转到我的代码并“悬停”在“NULL”上时,会显示一个窗口“#define NULL 0”。我可以右键单击 NULL 并打开“查看定义”。文件 vcruntime.h 被打开,它显示了 NULL 的定义。 (此文件被标记为只读。)
为什么每次出现 NULL(+200 次)时都会出现此错误?
编辑:
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
【问题讨论】:
-
@Serhio 这是完全有效的 C。你从哪里得到这个想法?
-
@Serhio IIRC
#define NULL 0是 C 的标准。为什么不呢? -
@Lundin 7.17 "... 扩展为实现定义的空指针常量..." 。不是说这样的常量应该有
((void *)0)这样的指针类型吗? -
@Serhio 6.3.2.3/3:“一个值为 0 的整数常量表达式,或这种类型转换为
void *的表达式,称为 空指针常量 。” -
@melpomene 是的,我的错。
标签: c visual-studio-2015