#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);
}
当我尝试使用MSVC编译它时,我收到以下错误:
注释掉GetLogicalDriveStrings(1024, buff);
会导致代码编译得很好
答案 0 :(得分:7)
旧版本的C需要在块的开头声明局部变量,然后再进行函数调用。将int i;
移动到函数顶部,使其声明为buff
。
C ++与C99一样废除了这一要求。
答案 1 :(得分:1)
将其更改为:
#include <stdio.h>
#include <Windows.h>
int main()
{
int i;
TCHAR buff[1024];
GetLogicalDriveStrings(1024, buff);
for(i = 0; buff[i] != 0; i += 4)
printf("%S", buff+i);
}
在调用C中的函数之前声明变量。
答案 2 :(得分:0)
将“int i”移动到“TCHAR buff [1024]”之前或之后的行,或将main.c重命名为main.cpp
不过,一旦你决定使用TCHAR,你应该使用_t系列函数/宏:_tprintf(_T( “...”))