c - 在哪里声明结构
问题描述
我制作了 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);'
解决方案
只需按正常方式进行即可:
// 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
}
推荐阅读
- python - 在 python Numpy 中追加和格式化多维数组
- c# - 试图做一个壁架。问题:transform.position 总是返回vector(0, 0)
- python - 勇敢地不使用 Python Selenium 打开
- docker-compose - 如何在 Dockerfile RUN 中使用环境变量
- javascript - 插入光标js的位置
- azure - 使用 Terraform,如何在 Azure 上创建使用现有托管磁盘的 VM?
- python - 将表单信息导出为 Excel 中的行
- python - 算法问题,如何在python和opencv中找到以角度码为边界的像素数
- function - 为 sinc(x)=sin(x)/x 编写一个 MATLAB 函数
- linux-kernel - 在没有系统调用的情况下写入磁盘