类型的宏定义

来源:百度知道 编辑:UC知道 时间:2024/05/11 02:30:22
typedef char* mychar;
void fun(const mychar p)
{}
int _tmain(int argc, _TCHAR* argv[])
{
const char* p="This";
fun(p);
}
会有错误,请高手解释一下宏定义和一般类型定义使用的区别,为什么会导致类型不一致。请详细点,谢谢.

首先,这里并没有宏定义。

你定义的类型mychar和 char*虽然是一样的类型,但是编译器认为这是两种截然不同的类型,除非你定义了这两种类型之间的转换(例如,构造函数、拷贝构造函数),或者使用强制类型转换,否则就会报错。

最后,提醒以下,const mychar p和const char *p也是不一样的:

const mychar p相当于char *const p,而不是想当然的const char *p

故,报错!

这个错误还没有上升到类型的宏定义的高度
把 const 去掉就能编译啊