代码之家  ›  专栏  ›  技术社区  ›  anonymous coward

为什么不编译?

  •  1
  • anonymous coward  · 技术社区  · 14 年前
    #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); 使代码编译得很好

    3 回复  |  直到 14 年前
        1
  •  7
  •   Amber    14 年前

    旧版本的C要求在诸如函数调用之类的事情发生之前,在块的开头声明局部变量。移动 int i; 到要声明的函数的顶部 buff .

    C++取消了这个要求,就像C99一样。

        2
  •  1
  •   David Titarenco    14 年前

    把它改成:

    #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中调用函数之前声明变量。

        3
  •  0
  •   Jason    14 年前

    将“int i”移动到“tchar buff[1024]”之前或之后的行,或者将main.c重命名为main.cpp

    顺便说一句,一旦决定使用tchar,就应该使用\t系列函数/宏:

    _ tprintf(_t(“…”))