【发布时间】:2016-04-21 11:10:54
【问题描述】:
我在标题“point.h”中有以下代码:
#ifndef POINT_H_INCLUDED
#define POINT_H_INCLUDED
struct Point* createDefaultValues();
#endif // POINT_H_INCLUDED
point.c 文件代码如下:
#include <stdlib.h>
struct Point {
int x;
int y;
};
struct Point* createDefaultValues()
{
struct Point* point;
point = (struct Point*) malloc(sizeof(struct Point));
point->x = 2;
point->y = 1;
return point;
};
而main.c由以下几行组成:
#include <stdio.h>
#include <stdlib.h>
#include "point.h"
int main()
{
struct Point* cerc;
cerc = createDefaultValues();
printf("%d, %d", cerc->x, cerc->y);
return 0;
}
我在 printf() 行获得了指向不完整类型错误的取消引用指针。我该怎么做才能修复它?
我知道我可以在 struct 中分配默认值,但我不想这样做,我只想使用在我的标题中找到的函数来分配它们。
【问题讨论】:
-
为什么 point.c 文件以“};”结尾。不应该只有}吗?
-
在 C 中,不带参数的函数应在声明
struct Point* createDefaultValues(void);中使用类型void。空括号意味着函数可以接受任何个参数。 -
@Lundin 这是函数定义,不是声明。
-
啊,没关系,我误会了。我以为他问为什么结构声明以分号结尾。评论已删除。