#include <IOSTREAM>
#define NULL1 (void*)0;
#define NULL2 0;
void main()
{
int* p ;
// p = 0;
// p = NULL1; // error
p = NULL2; // ok
std::cout<<*p<<std::endl;
}
是不是说明,在C++中,不同类型的指针不能互相赋值,在c中是可以的(没有c的环境,没有验证)?
这种写法的目的是满足让C和c++都能调用NULL。
因此得出一般性的规律:#ifdef __cplusplus 有这个编译条件,基本上就是让c++和c同时适用的情况
举例:也经常见到下面这种写法
#ifdef __cplusplus
extern "C" {
#endif
/**** some declaration or so *****/
#ifdef __cplusplus
}
#endif /* end of __cplusplus */