cab*_*00t 2 c embedded microchip
我正在使用Microchip的XC32编译器,它不允许在循环内声明变量(不支持C99),所以我不能这样做:
for(int i = 0;i<10;i++)
{do w/e}
Run Code Online (Sandbox Code Playgroud)
我不想让它成为一个全局的,因为很难跟踪它在大项目中的价值,在各种循环中使用相同的东西,即使你i = 0
在每个循环中初始化它.我甚至对此有一个错误,如果你有一些使用相同的嵌套循环,结果会发生奇怪的事情i
.
据我所知,我不能手动"取消声明"它,但是在通过块后,在一段代码中定义的变量是未声明的?这是真的,这是否意味着这个代码将像上面的代码一样:
{
int i;
for(i = 0;i<10;i++)
{do w/e}
}//no i anymore?
Run Code Online (Sandbox Code Playgroud)
根据C99标准,在循环的子句语句中声明的变量的范围for
在范围内受限于该循环.
在C89/C90中,该子句仅仅是一个可选表达式.
因此,在C89/C90中,您可以放心地模拟C99行为
{ /*open scope block*/
/* your declaration here, including possible definition*/
for (expression; ...){
}
} /*close scope block*/
Run Code Online (Sandbox Code Playgroud)