 Проблемы перехода на Visual Studio 2005/2008 с более ранних версий
    , FAQ
    Проблемы перехода на Visual Studio 2005/2008 с более ранних версий
    , FAQ
  |  | Наши проекты: Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту | |
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.107] | 
|   | 
 | 
 Правила раздела Visual C++ / MFC / WTL (далее Раздела)
    Правила раздела Visual C++ / MFC / WTL (далее Раздела)
   FAQ Раздела
 FAQ Раздела   Обновления для FAQ Раздела
 Обновления для FAQ Раздела    Поиск по Разделу
 Поиск по Разделу   MSDN Library Online
 MSDN Library Online| Страницы: (20) [1] 2 3 ... 19 20 все ( Перейти к последнему сообщению ) | 
 Проблемы перехода на Visual Studio 2005/2008 с более ранних версий
    , FAQ
    Проблемы перехода на Visual Studio 2005/2008 с более ранних версий
    , FAQ
  | 
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         | |
|  |  Господа. Давайте в этот топик писать обо всех проблемах перехода на VS 2005/2008 Указывать с какой версии переходили, что за проблема, и способы ее решения. Или если решение не найдено, задавать вопрос. 2Админы: Если сочтете нужным прикрепите этот топ. | 
| 
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         | |
|  |  Может тогда проблемы перехода с одной студии на другую, не обязательно на 2005,  за ней ведь наверняка появится и 2006б 2007, ..., 10000  p.s. Хотя ИМХО всех этих проблем не были бы, если бы при написании того же MFC Microsoft иногда посматривало бы в стандарт по C++, а не по С! И хотя бы попыталось усвоить, что такое ООП...   | 
| 
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         | |
|  |  Пытался собирать проект (созданный в VS2003) в VS2005. Под VS 2003 проект компилился без ошибок (и даже без предупреждений). В 2005-й студии возникло несколько ошибок суть, которых в следующем: вот кусок кода, который вызывает ошибку   for(int i = 0; i < 5; i++) {    ... } for(i = 0; i < 5; i++) {    ... } | 
| 
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         | |
|  |  Угу.а я наткнулся на то что std::hash_map теперь не в std а в stdext.. решил проблему добавлением   namespace std    {    using namespace stdext;    } что правда не очень хорошо... т.к. по стандарту я не имею право ковыряться в этом namespace - е .. | 
| 
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         | |
|  | Цитата dim_on @  но хотелось бы узнать почему произошли такие изменения в новой студии и можно ли изменить трактовку компилятором таких фрагментов, на ту, которая была в VS 2003? Она стала больше дружить со стандартом. А по нему это всегда было ошибкой, и ты рано или поздно должен был получить по рукам за такой код. | 
| 
         
         
          
           Сообщ.
           #6
          
          , 
          
         
         | |
|  | Цитата ViGOur @  p.s. Хотя ИМХО всех этих проблем не были бы, если бы при написании того же MFC Microsoft иногда посматривало бы в стандарт по C++, а не по С! И хотя бы попыталось усвоить, что такое ООП...   Не только MFC. ATL тоже не безгрешна)) к примеру _Module и __uuidof ----> имена зарезервированные стандартом   | 
| 
         
         
          
           Сообщ.
           #7
          
          , 
          
         
         | |
|  |  Вот ещё: 1) Будьте осторожны - 8 студия не компилирует неиспользуемые участки. 2) Если вы хотите оставить совместимость с предыдущими версиями студий, то вам придётся пользоватся условной компиляцией и делать развилки:   #if _MSC_VER >= 1400      // Тут используем новые функции crt, с новой политикой безопасности      // Все новые версии функций crt заканчиваются специальным суффиксом '_s' ("secure") #else      // Тут используем старые функции #endif 3) Настоятельно советую почитать раздел "Security Enhancements in the CRT" в MSDN. | 
| 
         
         
          
           Сообщ.
           #8
          
          , 
          
         
         | |
|  |  У всех студий есть некая таинмтвенная бага в реализации спецификации шаблонов, поэтому, например, Foobar SDK компилируется ТОЛЬКО для 2005 студии.   | 
| 
         
         
          
           Сообщ.
           #9
          
          , 
          
         
         | |
|  | Цитата dim_on @  Ошибка error C2065: 'i' : undeclared identifier в выделенной строке. Исправить это можно конечно просто определив переменную i вне тела 1-го цикла, но хотелось бы узнать почему произошли такие изменения в новой студии и можно ли изменить трактовку компилятором таких фрагментов, на ту, которая была в VS 2003? В свойствах проекта во вкладке c++ language можно убрать галку "for loop conformant scope" (или что-то в этом роде). А вообще, по стандарту правильно именно такое поведение. | 
| 
         
         
          
           Сообщ.
           #10
          
          , 
          
         
         | |
|  | Цитата mo3r @  А вообще, по стандарту правильно именно такое поведение. Такое - это какое? Правельнее в 2005-ой без галки.. | 
| 
         
         
          
           Сообщ.
           #11
          
          , 
          
         
         | |
|  |  По поводу безопасности в VS2005, _s закрывает одни дыры, открывает другие, к примеру если копировался путь с использованием strcpy_s и не скопировался полностью, то поведение программы может быть неизвестно, соответсвенно надо самому проверять длинну строки, что приводит к двойной проверке одних и тех же данных, так что я не вижу смысла в этих функциях.   | 
| 
         
         
          
           Сообщ.
           #12
          
          , 
          
         
         | |
|  |  Axis, Никаких дыр она не открывает. И не путай защиту на выход за пределы участка памяти, и защиту от нерадивого программера...   | 
| 
         
         
          
           Сообщ.
           #13
          
          , 
          
         
         | |
|  |  у меня одна проблема была при попытке перейти с 6.0 на 2005 - жутко не понравился интерфейс. злой он там какой то. все привычные по шестерке действия в 2005 совершенно по другому. | 
| 
         
         
          
           Сообщ.
           #14
          
          , 
          
         
         | |
|  | Цитата Ace @  // Тут используем новые функции crt, с новой политикой безопасности // Все новые версии функций crt заканчиваются специальным суффиксом '_s' ("secure") Чем начисто убиваем переносимость кода. | 
| 
         
         
          
           Сообщ.
           #15
          
          , 
          
         
         | |
|  | Цитата Axis @  если копировался путь с использованием strcpy_s и не скопировался полностью, то поведение программы может быть неизвестно Тебе надо сильно постараться, чтобы поведение программы стало неизвестным. В частности, написать свою ловушку для неправильных аргументов, в которой ты будешь игнорировать такие вещи. |