c - 为什么这不编译?

标签 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);
}

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

http://ahb.me/5T-

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

最佳答案

旧版本的 C 要求在 block 的开头声明局部变量,在函数调用之前。将 int i; 移动到函数的顶部,以与 buff 的声明一起。

C++ 取消了这一要求,C99 也是如此。

关于c - 为什么这不编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090405/

相关文章:

c - 如果全局变量被中断修改,是否真的需要 volatile 修饰符?

c - 为什么这个阻塞套接字读取返回零并且没有错误?

python - 在Windows python 2.5中杀死一个进程

php - Imagick PHP 5.4 扩展不适用于相对路径。 ( Windows )

c++ - wchar_t 和 char 在 WinDbg 中的表示

c - 培养对 waitpid() 和 getpid() 的正确理解

c - C中主下标值错误

windows - 如何将软件的输出发送到 Microsoft Windows 虚拟键盘?

c++ - 未运行 Win32 GUI 应用程序时如何获取 Windows 电源状态消息 (WM_POWERBROADCAST)?

.net - 当我 DllImport 一个在运行时平台上不可用的函数时会发生什么?