|
来源:csdn
发表日期:2008年5月10日
作者:
|
?:#define USE_VOID(x) (void *)x = (void *)x
>>不太清楚,你可以给出这个宏的使用代码吗
>>ll_printf(void * pio, char * format, ...) { va_list a; char buf[256]; va_start(a,format); vsprintf(buf,format,a); va_end(a); printf(linebuf); USE_VOID(pio);/////////////////here???? return strlen(buf); }
>>这个写法有点意思 #define USE_VOID(x) (void *)x = (void *)x 如果说是强制转换的话,那=左边的写法就不正常 我做了下测试 void* p; USE_VOID(p); 通过编译 int* p; USE_VOID(p); //通不过编译 这么看,难道是为了判断一个变量是否是void*型的? 但它为什么用在函数最后呢,而且整个函数也没有用到pio 看其他朋友有没有别的看法
>>我用GCC编译,即使是int *也不会报错呀。 USE_VOID只要传指针进去就是对地,没有问题呀,因为任何类型的指针都可以转换成void *呀
>>#define USE_VOID(x) (void *)x = (void *)x 改为 #define USE_VOID(x) *(void *)&x = (void *)x 就可以了
>>对于 #define USE_VOID(x) (void *)x = (void *)x int main() { int* p; USE_VOID(p); return 0; } 我在VC下编译通不过,在Dev-Cpp下可以 其目的还是不太清楚 在
>>void * 可以转成任何指针类型,其他类型转void *是不行的吧
>>是否是代码写错了? 这样看像是想把x转换成void类型。
>>楼主,你大概写错了! : jiangpeng(JP) 其它类型指针是void*指针,可以隐式转换; void*指针不是其他类型指针,必须显式转换; 我说得对吗?
>>void *类型指针可以指向任何类型对象
>>我再不从一句, pio 是接收输入的参数, 它由在命令行输入的到。 代码没有错误, 我是原版拷贝过来的。 我想这里是不是跟void类型转换有关呀?
>>如果我要接收非void类型的参数,是不是也可以呢?
(编辑:网站学习网)
|
|
|
|