keil报错:main.c(99): error: #20: identifier “xxx“ is undefined

报错如下:

main.c(116): main.c(116): error: #20: identifier "g_pol_par_linear" is undefined

main.c(99): error: #20: identifier "g_motor_sta_linear" is undefined

main

cs 复制代码
#include "Interpolation_Linear.h"     //Interpolation_Linear.c里定义了g_pol_par_linear

int main(void)
{
	g_pol_par_linear.moving_mode = 1;
    while(g_motor_sta_linear);	
	printf("圆弧插补\r\n");
}

Interpolation_Linear.c

cs 复制代码
//结构体
inter_pol_def g_pol_par_linear= {0};   /* 直线插补参数值 */


//枚举
__IO st_motor_status_def  g_motor_sta_linear = STATE_STOP_linear;     /* 步进电机运动状态 */

我认为在主函数里引用了"Interpolation_Linear"的头文件,就包含了里面定义的变量。

但是会报错。

解决办法:在主函数加extern声明。

cs 复制代码
#include "Interpolation_Linear.h"     //Interpolation_Linear.c里定义了g_pol_par_linear

extern inter_pol_def g_pol_par_linear;					//直线插补模式
extern st_motor_status_def  g_motor_sta_linear;			//直线插补	运动模式

int main(void)
{
	g_pol_par_linear.moving_mode = 1;
    while(g_motor_sta_linear);
	printf("圆弧插补\r\n");
}

加入声明后报错消失。

相关推荐
玩转以太网16 分钟前
WIZnet以太网单片机选型指南
单片机·嵌入式硬件·以太网
tianyazhichiC1 小时前
stm32f103 标准外设库下载
stm32·单片机·嵌入式硬件
黎雁·泠崖1 小时前
整数的N进制字符串表示【递归+循环双版满分实现】
c语言·开发语言
小美单片机2 小时前
Proteus 报错 Unable to open HEX file ‘..\1、程序\jio\jtd.hex‘. [U1]
c语言·单片机·嵌入式硬件·51单片机·proteus
乡野码圣2 小时前
【RK3588 Android12】固件烧录与启动
stm32·单片机·嵌入式硬件
灵哎惹,凌沃敏2 小时前
一句话总结IIC协议
arm开发·单片机·开源协议
2401_863318632 小时前
基于单片机的温度控制系统的设计
单片机·嵌入式硬件
z20348315203 小时前
AI模型部署草稿
人工智能·单片机·嵌入式硬件
济6173 小时前
c语言基础(1)--数据类型说明
c语言·开发语言