嗯嗯,今天写C代码遇到个warning是关于指针赋值的:
char *a = "hello";
int *b = a;
像上面这种代码,GCC是不报错的,而是报一个warning:
warning: initialization from incompatible pointer type
若是:
float a = 1.1;
int* b = &a;
也是报上面那个warning. 看来和指针指向的存储区域没关系哈。
但是如过一个函数的返回值是一个指针例如:
int* tmp()
{
....
return a;
}
float *b = tmp();
报的warning就不一样了。
warning: initialization makes pointer from integer without a cast
比较搞笑的GCC啊,google发现是因为函数没有声明, GCC对于未声明的函数 默认返回 int 。
加上函数声明之后,就和前面两个例子的警告一样了。
嗯嗯。看来懂编译器会对debug很有帮助啊。