• C语言中的关于“ : ”的一些思考


    ​ 前段时间做一个项目写芯片函数的时候遇到了类似于下图这样的一段代码,刚开始真的是百思不得其解。

    image-20200415225405965

    ​ 不难发现有几行代码显得十分突兀,在原工程文件三百余行的代码中类似于这样的代码有十多行。

    V_AllTest_loop:
    ......
    V_AllTest_loop_body:
    ......
    V_AllTest_loop_end:
    

    ​ 仔细回想下C语言中那里学到过 “ : ” 这个符号,想了一下貌似只有goto语句用到过

    goto语句是一种无条件转移语句,goto 语句的使用格式为:
    goto 语句标号;
    其中标号是一个有效的标识符,这个标识符加上一个 “ : ” 一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。

    ​ 接下来再看原工程中的语句,如果加上goto之后就没什么奇怪的了,可问题是原工程中从头到尾都没有出现过任何goto语句,这个时候一定会想这几行代码是不是有什么其他的用途,但是我看了好久都没有想明白,跟其他几个小伙伴商量之后也没有结果。

    下面的一段解释纯属个人想法,如有错误的地方还请各位大佬批评指正

    ​ 我们运行下最上面的那段代码,结果如下:

    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    Process returned 0 (0x0)   execution time : 0.018 s
    

    ​ 可以看到 “ : ” 前面的代码没有执行,我第一时间得出的结论是这些代码在原工程中只是起到了类似于注释的作用,这么写的原因是因为它们能够比普通的注释更好的标记出某个代码块

    ​ 后面又去网上查找了一些相关的资料发现好多芯片底层开发都会用到goto,所以在原工程中很可能也是为goto而写的,不过goto使用不恰当会破坏逻辑的完整性,造成很多潜在的风险,所以还是尽量少用

  • 相关阅读:
    msyql数据库位置
    linux端口
    crontab
    floyd算法 青云的机房组网方案(简单)
    拓扑排序 codevs 4040 cojs 438
    高精度模板
    莫比乌斯函数
    二分算法~~~大综合
    莫比乌斯反演 BZOJ 2820
    2016.6.2考试整理
  • 原文地址:https://www.cnblogs.com/yangyu-IoT/p/12709513.html
Copyright © 2020-2023  润新知