最近做代码评审时,发现很多同事的编码都游走在风险的边沿,其中最显眼的就是局部变量定义位置比较随意。
void Function(void)
{
int Var1 = 0;
int Var2 = 0;
//do someting......
}
刚开始学习C语言的时候,感觉也没啥好解释的,照着书上和老师的"规矩"来就可以了,后来又学习了C++,C++对这一块相对就比较灵活,注意一下作用域,随时定义随时用,不需要遵循变量定义必须放在函数开头这一规则。
void Function(void)
{
int Var1 = 0;
//do someting......
int Var2 = 0;
//do someting......
}
直到很久很久以前有一次看到别人的C程序也可以像C++这样灵活的定义变量,才认识到C语言还有不同的标准,也是从那以后开始了解C语言的标准。
所谓“无规矩、不成方圆”,不同的编译器会根据不同的标准引入相关的“规矩”来约束和指导编程人员进行程序设计。
C语言作为嵌入式领域主力的编程语言,自然也应该不断的修正和优化,那得有专门的人来做这些事 -- C语言标准化委员会,目前编译器主要参考的有三个标准:
C89(C90) | 1989年批准、1990年发布(ISO/IEC 9899: 1990 ) |
C99 | 1999年发布(ISO/IEC 9899: 1999) |
C11 | 2011年发布(ISO/IEC 9899: 2011) |
当然啦,据了解目前的标准都已经更新到了C17,但具体哪些编译器对其进行了支持,那又是另外一个故事了。
编译器为了满足不同开发者的需求,以及新旧代码工程的兼容,都会把C语言标准的相关选择放开到编译选项中,开发人员根据自身需求进行选择编译自己的工程源码,我们来看看,比如:
最后
好了,今天就跟大家分享这么多了。如果你觉得有所收获,一定记得点个赞~
END
来源:最后一个bug