谁可以解释一下这句的含义?有什么用呀!

compboy1 2004-05-06 07:12:56
#define USE_VOID(x) (void *)x = (void *)x
...全文
17 16 点赞 打赏 收藏 举报
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
compboy1 2004-05-08
如果我要接收非void类型的参数,是不是也可以呢?
  • 打赏
  • 举报
回复
compboy1 2004-05-08
我再不从一句, pio 是接收输入的参数, 它由在命令行输入的到。
代码没有错误, 我是原版拷贝过来的。
我想这里是不是跟void类型转换有关呀?
  • 打赏
  • 举报
回复
jp311 2004-05-07
void *类型指针可以指向任何类型对象
  • 打赏
  • 举报
回复
zxs790501 2004-05-07
楼主,你大概写错了!

: jiangpeng(JP)

其它类型指针是void*指针,可以隐式转换;
void*指针不是其他类型指针,必须显式转换;

我说得对吗?
  • 打赏
  • 举报
回复
null2002 2004-05-07
是否是代码写错了?
这样看像是想把x转换成void类型。
  • 打赏
  • 举报
回复
brtjiba 2004-05-07
compboy1(程员)
哈哈!我也觉得像是脱了裤子放屁
  • 打赏
  • 举报
回复
congliu 2004-05-06
up
  • 打赏
  • 举报
回复
compboy1 2004-05-06
这么做算不算脱了裤子放p呀?
  • 打赏
  • 举报
回复
junnyfeng 2004-05-06
void * 可以转成任何指针类型,其他类型转void *是不行的吧
  • 打赏
  • 举报
回复
freefalcon 2004-05-06
对于
#define USE_VOID(x) (void *)x = (void *)x
int main()
{
int* p;
USE_VOID(p);
return 0;
}

我在VC下编译通不过,在Dev-Cpp下可以
其目的还是不太清楚
  • 打赏
  • 举报
回复
cngdzhang 2004-05-06
#define USE_VOID(x) (void *)x = (void *)x
改为
#define USE_VOID(x) *(void *)&x = (void *)x

就可以了
  • 打赏
  • 举报
回复
jp311 2004-05-06
我用GCC编译,即使是int *也不会报错呀。
USE_VOID只要传指针进去就是对地,没有问题呀,因为任何类型的指针都可以转换成void *呀
  • 打赏
  • 举报
回复
compboy1 2004-05-06
我好像明白了……!!
  • 打赏
  • 举报
回复
freefalcon 2004-05-06
这个写法有点意思
#define USE_VOID(x) (void *)x = (void *)x
如果说是强制转换的话,那=左边的写法就不正常
我做了下测试
void* p;
USE_VOID(p); 通过编译
int* p;
USE_VOID(p); //通不过编译
这么看,难道是为了判断一个变量是否是void*型的?
但它为什么用在函数最后呢,而且整个函数也没有用到pio

看其他朋友有没有别的看法
  • 打赏
  • 举报
回复
compboy1 2004-05-06
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);
}
  • 打赏
  • 举报
回复
freefalcon 2004-05-06
不太清楚,你可以给出这个宏的使用代码吗
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2004-05-06 07:12
社区公告
暂无公告