在头文件中声明struct

时间:2013-02-05 03:07:15

标签: c struct header-files

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

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);
}

2 个答案:

答案 0 :(得分:8)

替换:

#include <info.h>

用,

#include "info.h"

使用<>编译器仅搜索预先指定的头文件夹中的头文件。这用于标准库头文件 使用""编译器首先搜索.c文件所在的本地目录中的头文件。这用于用户定义的头文件。

答案 1 :(得分:1)

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