资讯动态

项目复盘20260926

发布时间:2026/9/28 5:54:34 来源:尧图企业网站定制
1.关于extern的使用使用extern声明变量不会占用内存被提到后再去找地址不用提前分配内存。----初设在全局定义头文件里定义变量#ifndef GLOBAL_H #define GLOBAL_H unsigned long data 0; unsigned long old_data 0; unsigned long PIR_data 0;如果我分别在eg1.c和eg2.c两个文件都会同时展开global.h这个文件进行两次内存分配而编译器没有报错的原因可能是分别生成了两个地址此处待验证。正确做法//global.h extern unsigned long data 0; extern unsigned long PIR_data 0; //eg1.h unsigned long data 0; //eg2.h unsigned long PIR_data 0; long data PIR_data //extern 是 声明 不是 定义不应该带 0 但是又有说法说不可以带02. 关于Timer0 的 TOCS位置的作用TOCS位置1或者置0 是代表Timer0使用的不同用法TOCS 1 代表计数器模式TOCS 0 代表定时器模式3. 关于中微IDE报错#if 缺失Error[100]: 第2行 unterminated #if[n]def block from line 2意思是 从第 2 行开始的#ifndef条件编译块到文件结束都没找到#endif4.关于中微IDE报错 限定符重复报错qualifiers redeclared 限定符重复声明 conflicting declarations for RB2 和 RB2 的原有声明冲突删去extern bit EN;即可5.关于定义参数的时候没有同时定义初值会导致参数上电乱码至于某个子程序不运行案例//无法运行代码 unsigned int R_Power_Delay; unsigned int g_mainTime; void Poweron_Check(void) { LED_RED 1; R_Power_Delay 500; while(R_Power_Delay) { if(g_mainTime 2) { g_mainTime 0; asm(clrwdt); R_Power_Delay--; } } LED_RED 0; LED_GREEN 1; R_Power_Delay 500; while(R_Power_Delay) { if(g_mainTime 2) { g_mainTime 0; asm(clrwdt); R_Power_Delay--; } } LED_GREEN 0; } //更改后可运行代码 unsigned int R_Power_Delay0; unsigned int g_mainTime0; void Poweron_Check(void) { LED_RED 1; R_Power_Delay 500; while(R_Power_Delay) { if(g_mainTime 2) { g_mainTime 0; asm(clrwdt); R_Power_Delay--; } } LED_RED 0; LED_GREEN 1; R_Power_Delay 500; while(R_Power_Delay) { if(g_mainTime 2) { g_mainTime 0; asm(clrwdt); R_Power_Delay--; } } LED_GREEN 0; } //因为上电g_mainTime 初值自动变最大值

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑