从C ++过渡,我现在正在学习C的黑暗艺术,并开发了以下代码来取代我对模板的需求。在下面的示例中,我已经实现了您的花园种类节点结构,以便它可以用于存储任何数据类型。请考虑以下内容......
// vptr.c
#include <stdio.h>
struct Node
{
void* data;
struct Node* next;
};
int main()
{
struct Node n0, n1;
n0.next = &n1;
n0.data = malloc(sizeof(int));
*((int*) n0.data) = 3;
printf("%d\n", *((int*) n0.data));
return 0;
}
同样,问题在于警告免费编译这段代码 - 即使用gcc编译器,虽然我的wxDevCpp for Windows也给了我一些警告,但对它不那么挑剔。我把它归咎于GUI。
非常感谢任何帮助。
答案 0 :(得分:2)
对我来说,只需为malloc(<stdlib.h>
)添加正确的include,即可使用gcc -std=c89 -Wall -Wextra -pedantic
免费编译警告。
答案 1 :(得分:2)
malloc
在stdlib.h中声明,您没有包含它。因此,如果您添加#include
,警告就会消失。
另一个警告是关于//
,这不是C89中的有效评论。要使该警告消失,请使用/* */
进行评论或告诉gcc使用C99。