摘要:
uchar led34DataIndex=0; P0=led34Data[led34DataIndex++]; HC573(4); delayMs(125); if(led34DataIndex==4)led34DataIndex = 0; //等同于 //P0=led34Data[led34Dat 阅读全文
摘要:
逗号运算符是优先级最低的。 通常单目运算符优先级大于双目。三目最小。但需注意,双目运算符中的赋值运算符优先级是最低的。 在C语言中,大部分运算符都是从左向右进行计算的,但是也存在一些自右向左的运算符。其中最常见的自右向左的运算符是赋值运算符 = 和逗号运算符 ,。 赋值运算符 = 是自右向左结合的, 阅读全文
摘要:
局部变量存储在内存堆栈,仿真时查看变量会出现not in scope 问题。如下图: 全局变量存储在静态内存中,仿真时查看变量不会出现not in scope 问题。 阅读全文
摘要:
extern的使用 在C语言中,extern关键字用于在多个源文件之间声明全局变量、函数或对象,实现模块间的交互和数据共享。即告诉编译器该变量或函数是在其他源文件中定义的,并且可以在当前源文件中使用。而局部函数的作用域限定在其定义所在的作用域内,无法被其他源文件直接访问或调用。因此,extern关键 阅读全文
摘要:
用keil写代码最好标准化,比如:显式地使用比较操作符,显式声明各变量,函数等等。尽可能的不使编译器进行对条件判断等等进行优化,从而达到预期效果。具体方案可能因编译器、编译选项和代码结构等因素而异。 阅读全文
摘要:
在Keil模块化编程中,每个子模块通常会有自己的.h头文件和.c源文件。这些头文件包含了子模块的函数声明、宏定义和结构体定义等信息,而源文件则包含了子模块的具体实现代码。 当你在`main.c中调用子模块的函数时,通常需要包含对应的子模块的头文件,以便在`main.c中能够正确地使用子模块的函数和定 阅读全文
摘要:
头文件被包含的方式 (1)本地文件包含 #include "test.h" 用户自定义的文件用双引号括起来,编译器首先在当前文件所在的目录搜索是否有符合的文件,如果没有再到C++安装目录的include文件夹里去找对应的文件(Vscode中现在可以指定和修改库文件查找路径,Unix和Linux中可以 阅读全文
摘要:
#define和#include都是C语言中的预处理指令,“#”表示这是一条预处理命令。 (1)、“define”为宏定义命令,“标识符”为所定义的宏名。 #define是宏定义,例如: #define a 45 这条指令会导致程序所有单独出现的a被替换为45。 (2)、#include是文件包含指 阅读全文