for ( int iIdx = 0; iIdx < argc; ++iIdx )
_tprintf( TEXT( "Arg %d: %s\n" ), iIdx, argv[ iIdx ] );
_tprintf( TEXT( "\n" ) );
这在C中有效吗?因为我在尝试编译它时遇到错误,如果我从for循环的初始化部分中删除了int,它编译得很好......
答案 0 :(得分:9)
在C99之前的C中无效。
在C89 / 90及更早版本中,声明需要位于每个块的开头。您不能交错声明和普通代码。
for
内的声明不计算在块的开头。
答案 1 :(得分:0)
是。 Microsoft的C编译器(cl
)不支持现代C(C99)。对于像这样的循环初始化器是C99中的新功能。