【发布时间】:2011-08-30 15:02:46
【问题描述】:
有以下 C 代码:
typedef void*(m3_func)(void);
#define NULL ((void*)0)
char* lolinfo()
{
return "You got the additional info! :D";
}
m3_func** m3_funcs() {
return (m3_func**) {
(m3_func*)(&lolinfo), // warning #1
NULL
}; // warning #2
}
我收到以下警告:
- /home/lk/proj/m3/m3_lolauncher/lolauncher.c(0,0):警告:从不兼容的指针类型初始化(m3_lolauncher)
- /home/lk/proj/m3/m3_lolauncher/lolauncher.c(0,0):警告:标量初始化程序中的元素过多 (m3_lolauncher)
我不明白第一个,因为我正确投射?
我从没见过第二个...
【问题讨论】:
-
这是很多哈哈的...
-
这些警告真正想告诉你的是,在进一步学习之前,你可能应该阅读一本关于 C 的介绍性书籍
-
那么请让我大声笑。十分钟后我自己; “哦,伙计,我是不是很笨,不理解这些简单的错误”:)?
-
我不认为 typedef 能如你所愿......
-
@awoodland 将其更改为
typedef void(*m3_func)(void);(并根据此更改使上述代码正确),我得到相同的警告。我猜不是。
标签: c warnings function-pointers