gpt4 book ai didi

c - 带标题的不完整类型

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:07 24 4
gpt4 key购买 nike

我有一个头文件:

位置.h

#ifndef LOCATION_H
#define LOCATION_H

#define MAX_X_GRID (3)
#define MAX_Y_GRID (3)

typedef struct _location Location;

extern Location *Location_create();
extern void Location_destroy(Location *);

#endif /* LOCATION_H */

..源文件:

位置.c

#include <stdlib.h>
#include "Location.h"

#define VALID_LOCATION_CODE (245)
#define _location_check(l) \
if ( l == NULL || l->_Valid != VALID_LOCATION_CODE ) \
abort();

struct _location
{
int x;
int y;
int _Valid;
};

struct _location *Location_create(const int x, const int y)
{
if (x > MAX_X_GRID || y > MAX_Y_GRID)
return NULL;

struct _location *l = malloc(sizeof(struct _location));
if (l == NULL)
return NULL;
l->x = x;
l->y = y;
l->_Valid = VALID_LOCATION_CODE;
return l;
}

void Location_destroy(struct _location *l)
{
_location_check(l);
free(l);
}

.. 我正在测试这样的代码:

测试.c

#include <stdio.h>
#include "Location.h"

int main(int argc, char const *argv[])
{
Location *l = Location_create(1, 2);
printf("x: %d, y: %d\n", l->x, l->y); /* line 6 */
Location_destroy(l);
return 0;
}

当我用这个命令编译程序时:

gcc test.c -o test -Wall

我收到这些错误:

test.c:6:27: error: trying to dereference a pointer of incomplete type

// line 6

test.c:6:33: error: trying to dereference a pointer of incomplete type

// line 6

从错误来看,gcc 似乎不知道我包含的头文件。

我该怎么做才能解决这个问题?

最佳答案

Location.h 没有泄露 struct _location 的内容(类型不完整),所以在编译 test.c gcc 时不知道 l->xl->y 是什么。

关于c - 带标题的不完整类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26168192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com