Почему это не компилируется? - PullRequest
1 голос
/ 22 июня 2010
#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 ]

7 голосов
/ 22 июня 2010

Более старая версия C требует, чтобы локальные переменные объявлялись в начале блока, перед такими вещами, как вызовы функций.Переместите int i; в начало функции, чтобы объявить buff.

C ++ снял это требование, как и C99.

1 голос
/ 22 июня 2010

Измените его на:

#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.

0 голосов
/ 22 июня 2010

переместите «int i» в строку до или после «TCHAR buff [1024]», или переименуйте ваш main.c в main.cpp

btw, вы должны использовать функции / макросы серии _t послерешил использовать TCHAR:

_tprintf (_T ("..."))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...