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

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

создайте новый (С++) проект с именем «тест» (файл | новый | проект), выберите «Приложение 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");

...

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

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

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

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

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

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


person Community    schedule 05.01.2010    source источник


Ответы (1)


Это похоже на проблему, которую вы должны сообщить в службу поддержки Microsoft.

person Ramon Zarazua B.    schedule 06.01.2010