0

このコードを VC++ でコンパイルする場合、VC++ について質問があります。

#include "stdafx.h"
#include <stdlib.h>
//#include <stdio.h>
#include <iostream>
#include <Windows.h>

TCHAR lpBuffer[MAX_PATH];

int _tmain(int argc, _TCHAR* argv[])
{
    DWORD dwBufferLength = 0;
    if(!(dwBufferLength = GetWindowsDirectory(lpBuffer, MAX_PATH)))
        std::cout << "Last error : "<< GetLastError() << std::endl;
    else{
        std::cout << lpBuffer << std::endl;
        /*for(DWORD i = 0; i < dwBufferLength; i++)
            printf("%c", lpBuffer);*/
        std::cout << std::endl;
    }

    system("PAUSE");
    return 0;
}

"C" しか表示されず、g++ でコンパイルすると "C:\Windows" と表示されます。何が問題なのですか? 確かに、g ++の下の最初の行「#include "stdafx"」を削除する必要があります:)

「_tmain」を「main」に変更します^__^

4

1 に答える 1

1

コードを修正した後:

#include <iostream>
#include <Windows.h>

int main() {
    char lpBuffer[MAX_PATH];
    DWORD dwBufferLength = 0;

    if(!(dwBufferLength = GetWindowsDirectory(lpBuffer, MAX_PATH)))
        std::cout << "Last error : "<< GetLastError() << std::endl;
    else
        std::cout << lpBuffer << "\n";
    return 0;
}

VC++ (2012) と gcc 4.7.2 (MinGW) の両方で同じ結果 ("C:\windows") が得られます。

于 2013-03-05T00:40:43.600 に答える