嵌入式C/C++常见错误和注意事项
Posted 跋扈洋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式C/C++常见错误和注意事项相关的知识,希望对你有一定的参考价值。
嵌入式C/C++常见错误和注意事项
引言
我们在嵌入式开发中,编写完一个新功能,但实现别的效果差强人意,检查后发现逻辑并没有什么错误,此时我们就要注意,是否是C/C++使用技巧的错误。本文就来总结一下,常遇到的错误。
介绍
在函数的某个循环中使用return
我们在嵌入式开发中,如果使用任务调度,往往每个任务中都有一个死循环。而我们有时候需要某任务函数带有返回值,就会不小心在循环中使用了return,此问题导致的后果就是,会直接让我们的循环停止,去执行调用此函数后的语句。我们如果初始时设想是不断的执行循环,只是在特定的时候返回值,那么我们就要注意这个问题。return 是会跳出函数的,无论你在函数的哪个循环里。
下面举个例子:
#include <stdio.h>
#include <windows.h>
#include <stdint.h>
uint8_t test();
int main()
uint8_t A;//1
while(!test())//2
printf("cccc:\\n");//3
printf("bbbbb\\n");//4
system("pause");
return 0;
uint8_t test()
int A1=0;
int i;
for(i=0;i<10;i++)//5
A1=i;
if(A1==5)//6
printf("A1:%d\\n",A1);//7
return 1;//8
return 0;//9
printf("iiiii:%d\\n",i);//10
上述程序在"1"的时候进入test函数,此时进"5"这个循环中,如果因为在“6”处对比失败,所以会跳到“9”的位置,此时会直接跳出“5”这个循环,后面的“10”也不会执行,而是跳转到“3”。之后回到“2”进行第二次test函数调用时,又会重新进入“5”这个循环,此时永远不会执行到i=1的状态,因为第一次进入循环,就在“9”处跳出了,故不会执行到我们想要的“7”这个位置,也就收不到“8”这个1的返回值。永远执行不到“4”.
修改的方法,就是去掉“9”,这样会执行到i==5的时候执行“7”,然后执行“8”,让test函数的返回值为1。然后才会执行到“4”。
后续
欢迎关注公众号:物联网知识
以上是关于嵌入式C/C++常见错误和注意事项的主要内容,如果未能解决你的问题,请参考以下文章
常见嵌入式/C/C++面试题100+集合(含参考答案)-更新中