#define和typedef的区别,和编译器有关吗?
在网上看了很多资料,和视频,都有讲过
#define和typedef的区别,今天我用Dev-c++试了一下,很奇怪,如下图,
为什么不报错呢?代码如下:
#include <stdio.h>
#include <stdlib.h>
#define PCHAR char*
int main()
{
PCHAR p3,p4,p5;
char i;
p3=&i;
p4=p3;
p5=&i; //为什么不报错呢?
printf("%d\n",p4);
system("PAUSE");
return 0;
}
求指点,是和编译器有关吗?dev-c++默认的编译器不是GCC吗?
[解决办法]
如果是C编译器的话
warning: assignment makes integer from pointer without a cast
C++编译器直接
error: invalid conversion from `char*' to `char'
[解决办法]
gcc包含了C和C++编译器。
如果扩展名是.c的话就是C编译器 .cpp就是C++编译器。
[解决办法]
你的例子已经可以很好的说明define和typedef的区别了!
至于不报错,可能因为是c源文件的原因吧!