static uint32_t oled_pow(uint8_t m, uint8_t n);中static的作用
时间: 2023-12-01 21:38:53 浏览: 147
在C语言中,static关键字可以用于函数、变量和数据类型的声明。在函数声明中,static的作用是将函数的作用域限制在当前文件中,使其不能被其他文件调用。在变量和数据类型的声明中,static的作用是将其作用域限制在当前文件中,使其不能被其他文件访问。
在你提供的代码中,static关键字用于函数声明中,即将函数oeld_pow的作用域限制在当前文件中,使其不能被其他文件调用。
相关问题
uint32_t OLED_Pow(uint32_t X, uint32_t Y) { uint32_t Result = 1; while (Y--) { Result *= X; } return Result; }.\Objects\Project.axf: Error: L6200E: Symbol OLED_Pow multiply defined (by oled.o and main.o).
这个错误提示是由于你的代码中 `OLED_Pow` 这个函数被重复定义了。可能是因为你在 `oled.c` 和 `main.c` 中都定义了这个函数。
解决方法有两种:
1. 在 `oled.c` 或 `main.c` 中将 `OLED_Pow` 函数的定义删除,只保留一份定义。
2. 将 `OLED_Pow` 函数的定义改为 `static inline`,这样编译器在编译时就会将函数的代码插入到调用处,不会生成一个独立的函数,也就不会出现符号重复定义的错误。修改后的函数定义如下:
```
static inline uint32_t OLED_Pow(uint32_t X, uint32_t Y) {
uint32_t Result = 1;
while (Y--) {
Result *= X;
}
return Result;
}
```
void Serial_SendString(char *String) { uint8_t i; for (i =0; String[i] != '\0';i ++) { Serial_SendByte(String[i]); } } uint32_t Serial_Pow(uint32_t X,uint32_t Y) { uint32_t Result = 1; while(Y--) { Result *=X; } return Result; } void Serial_SendNumber(uint32_t Number, uint8_t Length) { uint8_t i; for (i=0;i<Length;i++) { Serial_SendByte(Number /Serial_Pow(10,Length-i-1)%10+'0'); } }
这是一些用于发送字符串和数字的函数。Serial_SendString函数用于发送字符串,它会遍历整个字符串,将每个字符都通过Serial_SendByte函数发送出去。Serial_SendNumber函数用于发送数字,它会将数字转换为字符串形式,然后通过Serial_SendByte函数一个一个地发送出去。Serial_Pow函数用于计算指数幂,它会返回X的Y次方的结果。这些函数可以方便地在串口通信中发送字符串和数字。
阅读全文