在头文件中声明结构体

9

我希望在头文件中声明一个结构体,以便我可以在源文件中使用它。我做错了什么?我希望能够从任何函数访问我的结构体。

info.h

#ifndef INFO_H
#define INFO_H

typedef struct info
{
   int mem_size;
   int start_loc;
   int used_space;
   int free_space;
} INFO;
#endif

test.c

#include <stdio.h>
#include <stdlib.h>
#include <info.h>

#define F_first 1
#define F_last 2
#define F_data_int 3
#define F_data_char 4
#define F_data_float 5
#define F_print 6

void * f(int code);

int main() {

INFO in;
in.mem_size = 8;
f(F_last, 0,0);
return(0);
}

void * f(int code) {
printf("%d", in.mem_size);
}

3
你可能想在你的 test.c 文件中加入 #include "info.h" - Austin Phillips
我明白了。我以为“#include <info.h>”是同样的东西。 - Nelson.b.austin
2
如果您能展示出具体的编译器错误信息,那么会有助于确认人们所猜测的问题。因为“file 'info.h' not found”的错误会证实这一点。 - Jonathan Leffler
我不同意这被认为是太局限了。它解决了我遇到的问题。 - undershock
2个回答

9

替换:

#include <info.h>

与之配合,

#include "info.h"

<>符号表示编译器只会在预设的头文件目录中搜索标准库的头文件。
""符号表示编译器首先会在包含当前.c文件的本地目录搜索头文件。这种方式适用于用户自定义的头文件。


1

是的...对于自定义的头文件,必须使用#include "info.h"而不是#include <info.h">。通常它们不属于系统分支,而是位于Unix/Linux平台上的/usr/include目录中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接