C语言 哪个windows. h标头定义了NULL?[已关闭]

mkshixfv  于 2023-02-11  发布在  Windows
关注(0)|答案(1)|浏览(162)

3小时前关门了。
Improve this question
很遗憾我不得不编写一些Windows代码,我希望尽可能地将它与Linux部分分开。
有一次,我需要检查Windows代码中的NULL,但我不想包括stdio.hstdlib.h
我强烈怀疑NULL在windows.h中的某个地方被定义了,但是我找不到页面,我找到了this,这很有趣,但是没有告诉我想知道什么。

jk9hmnmh

jk9hmnmh1#

NULL在标准C报头stddef.h中定义,句号。
例如,如果您在Windows中运行gcc/mingw port,您可以告诉任何不太好的IDE找到NULL的声明,并在stddef.h中结束,其中显示#define NULL ((void *)0)
也可以创建如下所示的源文件:

// main.c
#include <windows.h>
int main (void)
{}

然后用gcc main.c -H编译,这将扩展所有的头依赖项,所以你会看到哪个头包含了哪些其他头,你会得到一大堆头,你会注意到stddef.h间接地包含在2-3个不同的位置。
结论:NULL * 不是 * 由windows. h或任何其他Windows特定的头文件定义的,您应该直接包括在内。
如果您需要使用NULL,那么正确的方法是使用#include <stddef.h>,而不考虑操作系统。

相关问题