在g ++中定义的__null在哪里?

wen*_*jon 5 null g++

在g ++中,NULL定义为__null,在64位情况下,__null是8个字节.如:

printf("sizeof(__null):%d, sizeof(0):%d\n", sizeof(__null), sizeof(0));
sizeof(__null):8, sizeof(0):4
Run Code Online (Sandbox Code Playgroud)

但是,__null定义在哪里?

Dav*_*rtz 7

实现__null是作为G ++内部.你不会在头文件或类似的东西中找到它.你可以在这里找到一些逻辑的解释,但基本的想法是,这是确保NULL首先被视为指针的最简单方法.

基本上,内部会做你天真期望reinterpret_cast<void *>(0)的事情.