我想在头文件中声明一个结构,以便我可以在源文件中使用它。我究竟做错了什么?我希望能够从任何函数访问我的结构。
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);
}
答案 0 :(得分:8)
替换:
#include <info.h>
用,
#include "info.h"
使用<>
编译器仅搜索预先指定的头文件夹中的头文件。这用于标准库头文件
使用""
编译器首先搜索.c文件所在的本地目录中的头文件。这用于用户定义的头文件。
答案 1 :(得分:1)
是的...对于基于自定义的标头,您必须使用#include "info.h"
而不是#include <info.h">
。通常它们不是系统分支的一部分,它们通常位于Unix / Linux平台上的/usr/include
目录中。