为什么不编译?

ano*_*ard 1 c windows winapi

#include <stdio.h>
#include <Windows.h>

int main()
{
    TCHAR buff[1024];
    GetLogicalDriveStrings(1024, buff);

    int i;
    for(i = 0; buff[i] != 0; i += 4)
        printf("%S", buff+i);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试使用MSVC编译它时,我收到以下错误:

http://ahb.me/5T-

注释掉GetLogicalDriveStrings(1024, buff);会导致代码编译得很好

Amb*_*ber 7

较旧版本的C需要在块的开头声明局部变量,然后再进行函数调用.移动int i;到函数的顶部以使用声明buff.

与C99一样,C++也不再满足这一要求.