为什么我的C项目编译无法找到我的结构?

时间:2014-09-29 13:17:46

标签: c struct compilation

我有一个基于单个C文件的项目,我尝试重新排列以便在几个.c和.h文件中进行进一步开发。

我的主要内容如下:

// General includes

typedef struct 
{
} MyStruct;

#include "MyInclude.h"

// Rest of the code

我的文件" MyInclude.c"组织如下:

#include "MyInclude.h"

// Defines

// Functions that need to know MyStruct

我对GCC的编制过程并不了解。事实上,我得到了错误" MyStruct未声明(在此功能中首次使用)"而且我不知道为什么在我的结构的typedef声明之后放入我的include。

有人知道为什么会这样吗?

2 个答案:

答案 0 :(得分:6)

问题有点不清楚。

文件" MyInclude.c"只能访问您的H文件。 虽然您的结构是用另一个C文件编写的。

您可以通过以下方式解决:

  1. 在H文件" MyInclude.h"上定义结构。它会起作用,但在方法论上它是错误的。
  2. 定义用于访问结构的setter和getter
  3. 干杯

答案 1 :(得分:0)

你的file.h:

// file.h
#include <stdio.h> //Juste for printf

typedef struct s_data
{
char c;
} t_data;

你的file.c:

#include "file.h"

int main()
{
t_data data;

data.c = 'a';
printf("%c", data.c);
return (0);
}

编译(如果您的文件.c和.h在同一目录中):

gcc file.c -o my_app -I .