首页 > 解决方案 > 在哪里声明结构

问题描述

我制作了 3 个文件来组织我的代码。一个main.c、一个functions.h和一个functions.c。我还制作了一个与某些函数一起使用的结构,但我遇到的问题是我找不到任何方法来声明使用 .h 文件中的结构的函数。它起作用的唯一方法是当我将函数与结构一起放入 .c 中而不在 .h 中声明它们中的任何一个。

我试过这个

主要是:

#include "functions.c"

在.c中:

#include "functions.h"
void myfunction(sinWave *sw, float u, float ts){
};

typedef struct{
   float amplitude;
   float fase;
} sinWave;

在.h中:

typedef struct sinWave;

void myfunction(sinWave *, float, float);

但它不起作用。我得到:

warning: useless storage class specifier in empty declaration
'typedef struct sinWave;'a

unknown type name 'sinWave'
'void ePLL(sinWave , float , float);'

标签: cfunctionstructheader-filesdeclaration

解决方案


只需按正常方式进行即可:

// functions.h
// type declaration
typedef struct { . . . } sinWave;

// function prototype
void myfunction(sinWave *, float, float);

// functions.c
#include "functions.h"

void myfunction(sinWave *sw, float u, float ts) {
   // function definition here
}

推荐阅读