2010-06-22 6 views
1
#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); 주석 처리왜 컴파일되지 않습니까?

http://ahb.me/5T-

코드가 C의

+0

혹시 C를 사용하고 있다는 질문에 언급해야할까요? –

+3

그의 방위에서, 그것은'c'로 태그가 붙었다 : –

+0

그리고 오류 메시지에서, 그것은 main.c이다. – Jason

답변

7

이전 버전이 필요한 지역 변수를 잘 컴파일 원인을 함수 호출과 같은 것 전에 블록의 시작 부분에서 선언 할 수 있습니다. buff 선언을 사용하려면 int i;을 함수의 맨 위로 이동하십시오.

C99는 C99와 마찬가지로이 요구 사항을 없앴습니다.

+0

'C는 함수 호출 이전에 블록의 시작 부분에서 지역 변수를 선언하도록 요구합니다. 'C99의 경우는 그렇지 않다. MSVC++는 여전히 C99을 지원하지 않는다고 생각합니다. –

+0

C++에 대한 추가 사항 외에 C99에 대한 참고 사항을 추가했습니다. – Amber

+0

MSVC가 C99을 지원하지 않는다는 것은 정말 놀랍습니다. Linux를 사용하고있을 때만 C를 사용합니다. –

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

전이나 "TCHAR 버프 [1024]"다음 줄에 "내가 int로"C.에

+0

나는 의심 스럽다. 그는 실제로 lib 파일을 포함하지 않고 C 콘솔 프로그램에서 Window 함수를 호출하려고한다! – thatsalok

+0

@thatsalok : 링크 오류가 아니라 컴파일 오류가 발생했습니다. –

+0

알아,하지만 작동하지 않을지는 모르겠다. :-) – thatsalok

0

이동 함수를 호출하기 전에 변수를 선언하거나 기본 이름을 변경 이 .c 당신은 _t 시리즈 함수를 사용한다, BTW

MAIN.CPP합니다/당신이 TCHAR 사용하기로 결정하면 매크로 :

_tprintf (_T을 ("..."))

관련 문제