?

Log in

Previous Entry

Допустим, есть MFC-приложение.
Рассмотрим переопределённый метод int CWinApp::Run().

У меня в MSVC 2010 по непонятным причинам не работал код следующего вида:

class MyApp : public CWinApp
...
int MyApp::Run()
{
    std::locale::global( std::locale( "C" ) );
    int result = 100;
    return result;
}

Exit code упорно был 0, хотя явно задано 100.

Такое у меня было всегда, пока явно задавалась локаль: std::locale::global( std::locale( "C" ) );
А это было надо :(

Решение этому было найдено практически мистическое.

class MyApp : public CWinApp
...
int MyApp::Run()
{
    std::locale dummyLocale;
    std::locale::global( std::locale( "C" ) );
    int result = 100;
    ...
    std::locale::global( dummyLocale );
    return result;
}

Причём, dummyLocale необходимо объявить ДО (!!!) вызова std::locale::global(...).

Теперь exit code стал корректно возвращаться после завершения программы. ;)

Comments

Profile

nanomachine
nanomachines
nanomachines

Latest Month

March 2012
S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031
Powered by LiveJournal.com
Designed by Tiffany Chow