嵌入式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++常见错误和注意事项

常见嵌入式/C/C++面试题100+集合(含参考答案)-更新中

⭐️欢度国庆-共约C语言进阶⭐️ 动态内存管理+柔性数组 建议收藏

常见内存错误的几点总结

C程序中常见的内存操作错误

编写函数add, 计算并返回两个整数的和.