Param.c文件包含几个全局数组,用于存储多个参数并与之交互。为了使用它们,我在必要的文件中应用了数组的extern ,但Param.c中的警告并没有消失。
'Param..' 已定义但未使用
如果把extern去掉,给数组加上static,那么控制台上会显示数组的 null 值。但是,接受参数的 MissionPlanner 将正确显示所有参数!请告诉我如何解决这种情况。
示意图代码:
|
|_main.h
| |_main.c
|
|_Params.c
|
|_Func.h
|_Func.c
-------<main.c>-------
#include"main.h"
#include"Params.c"
extern float ParamValue[];
int main(..){
GetVal();
while(1){
Print(ParamValue[PARAM_4]); //Custom debug print to UART(FTDI)
SendVal(ParamValue[PARAM_4]);
}
}
------<Params.c>------
enum ParamID{ PARAM_1=0,
PARAM_2=1,
PARAM_3,
PARAM_4,
PARAM_END};
float ParamValue[] = { 1.0f,
2.0f,
3.0f,
0.0f};
-------<Func.h>-------
#include "main.h"
void GetVal();
void SendVal(const float _param);
-------<Func.c>-------
#include"Func.h"
#include"Params.c"
extern float ParamValue[];
void GetVal(){
ParamValue[PARAM_4] = 4.0f;
}
void SendVal(const float _param){
//Send via UART to MissionPlanner
}
PS:我知道在多个文件中使用全局变量很危险。但是我没有想出另一种存储参数的方法。如果有人有任何建议,我很想听听!