C语言跨.c文件调用带指针参数函数变量未声明报错如何解决
问题原因
- C语言强制要求变量先声明再使用,你在主函数循环中用到的
tempWert、phWert、avin三个变量均未提前定义,编译器无法识别这三个标识符,因此抛出未声明错误。 - 你当前的函数调用顺序存在逻辑问题:首次调用
phMessung时传入的tempWert还没有通过tempMessung赋值,使用的是内存中的随机垃圾值,会导致pH计算结果异常。
修复方案
- 首先在主函数的while循环前,声明三个对应类型的变量,可同时赋予初始值避免编译器报未初始化警告:
double tempWert = 0.0; double phWert = 0.0; double avin = 0.0;
- 调整两个函数的调用顺序,先执行温度采集获取有效温度值,再传入温度值计算pH参数,修改后主函数代码示例如下:
#include "Messung.h" #include "main.h" // 其余头文件、宏定义等代码省略 int main(void) { // 芯片、外设初始化等原有代码省略 // 新增变量声明 double tempWert = 0.0; double phWert = 0.0; double avin = 0.0; while (1) { // 先采集温度 tempMessung(&tempWert); // 再用有效温度值计算pH phMessung(tempWert, &phWert, &avin); if(AD7793_Error()) while(1); HAL_Delay(10); } }
内容的提问来源于stack exchange,提问作者Marc Hammer
相关产品推荐
相关产品推荐

