Устаревшие функции не обнаруживаются при использовании «System :: Threading :: ThreadState» (и других!) C ++ VS2005 / 2008 - PullRequest
0 голосов
/ 05 января 2010

У меня проблема с c ++ на vs2005, а также на vs2008 ... вот как вы можете воспроизвести проблему ....

создать новый (c ++) проект под названием «test» (файл | новый | проект) выберите «Приложение Windows Forms»

и добавьте файл 'stdio.h' и фрагмент кода ниже в исходный файл test.cpp ..... ------------------- начало фрагмента --------------------

#include <stdio.h>

 ...

int main(array<System::String ^> ^args)
{
    int i;
    System::Threading::ThreadState state;

    char str[20];
    sprintf (str, "%s", "test string");

...

------------------- конец фрагмента --------------------

Если вы скомпилируете код, как указано выше (сначала вам нужно будет «buildall»), вы получите два предупреждения о том, что «i» и «state» не имеют ссылок (ничего не говорится об устаревшем sprintf).

Если вы закомментируете «System :: Threading: Thread state;», вы получите одно предупреждение о том, что «i» не имеет ссылок, и другое предупреждение (C4996) для «устаревшего» оператора sprintf ....

Эта проблема также возникает для «System :: Windows :: Forms :: MessageBoxIcon», «System :: Base64FormattingOptions» (и перерабатывает все типы «enum class»!)

Любой, кто знает причину и способ ее решения, продемонстрированный здесь (у меня есть другие файлы, которые устраняют эту проблему ...). (Я создал тему на msdn, но затем нашел этот сайт! См. Ссылку ниже)

Visual Studio 2005 прекратил предупреждение об устаревших функциях

1 Ответ

0 голосов
/ 06 января 2010

Это звучит как проблема, которую вам следует обратиться в службу поддержки Microsoft.

...