Что не так ? Одна функция, два результата

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DarkLight, 5 Jul 2012.

  1. DarkLight

    DarkLight New Member

    Joined:
    13 Jan 2011
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Здравствуйте, установил VS10 и не могу понять что не так.

    Простейшее

    PHP:
    if (GetDriveType("F:")==DRIVE_CDROM)
    {
        
    cout << "CD" << endl;
    }
    не работает.


    Пишет 1>octopus.cpp(10): error C2664: GetDriveTypeW: невозможно преобразовать параметр 1 из "const char [3]" в "LPCWSTR"

    Хотя в VS6 такой фигни нету, всё норм работает.
     
    #1 DarkLight, 5 Jul 2012
    Last edited: 5 Jul 2012
  2. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    PHP:
    if (GetDriveTypeA("F:")==DRIVE_CDROM)
    {
        
    cout << "CD" << endl;
    }  
    или

    PHP:
    if (GetDriveType(L"F:")==DRIVE_CDROM)
    {
        
    cout << "CD" << endl;

    или в самое начало программы:

    PHP:
    #undef _UNICODE

    В Windows для большинства функций, работающих со строками, есть две версии - ANSI и Unicode. Имена первых оканчиваются на A, вторых - на W. В твоем случае GetDriveType это просто макрос, который в новых студиях раскрывается в GetDriveTypeW. В старой студии это было GetDriveTypeA.
     
  3. DarkLight

    DarkLight New Member

    Joined:
    13 Jan 2011
    Messages:
    11
    Likes Received:
    1
    Reputations:
    0
    Спасибо!!!!

    #undef _UNICODE - не помогает
     
    #3 DarkLight, 5 Jul 2012
    Last edited: 5 Jul 2012
  4. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Попробуй без подчеркивания.