компилятор не собирает ex4, не выдавая при этом никаких ошибок

 
Уже не впервый раз сталкиваюсь с неприятным поведением компилятора.

Достаточно сложный с точки зрения количества блоков в условных операциях и циклах код компилируется без ошибок.
Только исполняемый файл не генерируется. Даже если он был, компилятор его молча затирает.

Стоит незначительно изменить код или поколдовать как-то с фигурными скобками, как все становится Ок.

Незначительно изменить значит добавить, например, в произвольном месте что-нибудь типа
    while (true)
        break;
или нарисовать фигурные скобки там, где они необязятельны - из
    if (op != 0)
        Print("operation ", op);
сделать
    if (op != 0)
    {
        Print("operation ", op);
    }
Случалось в разных версиях. Сейчас вот в 4.208 от 21/08/07.
Такое поведение ужасно раздражает своей непредсказуемостью и непонятностью, как с ним бороться. Может выскочить из-за малейшего незначительного изменения в коде. И приведенные воркараунды могут помочь, а могут и нет.

Кто-нибудь попадался на такую, как бы это сказать... особенность?
 
Фантастика... Дело здесь, думается, не в МТ. Проблема, скорее всего, в Винде, если у тебя она. Если Win XP с SP2, то там не все в порядке c региональными настройками (также глюки поступают через автообновление\багфикс).
 
Irtron:
    if (op != 0)
    {
        Print("operation ", op);
    }

Я всегда так делаю - и у меня никогда не было проблемов. НО - встречал такое в других языках. Получается, когда по каким то причинам нелья стреть скомпилированны (у нас - ex4) файл. Напр. если он открытой.
 
Неоднократно сталкивался с такой вещью: Код содержит ошибку. Нажимаю компилировать. В логах показывает что всё Ок. Однако при повторном нажатии Компилировать в логах выдаётся ошибка. Присутствует и в последнем 209 билде.
 
Просто ставьте скобки всегда, даже если после if() идёт всего одна команда кода.
 
1-2 строки не помогут. Приведите достаточный код, на котором точно проявляется этот эффект, пожалуйста.
 
Irtron:
Уже не впервый раз сталкиваюсь с неприятным поведением компилятора.

Достаточно сложный с точки зрения количества блоков в условных операциях и циклах код компилируется без ошибок.
Только исполняемый файл не генерируется. Даже если он был, компилятор его молча затирает.

Пришлите, пожалуйста, Ваш код на stringo AT metaquotes DOT ru

Гарантирую, что после исследований код будет безвозвратно уничтожен.

 

Тоже иногда сталкивался с таким. Незначительное изменения типа лишнего пробела, перерасстановки скобок решало вопрос... И наверно из этой серии, иногда при комментировании блока кода из нескольких строчек с помощью /* code */ комментируется только первая строка, любое изменение внутри этого блока и все становится нормально. Честно говоря, не уверен что проблема внутри MT, да и вообщем-то не напрягает, мелочи это, да и случается достаточно редко.

И еще один сложнообъянимый глюк: Открыл метаедитором файл (вчера, build 209), - нет подсветки синтаксиса, файл редактируется, компилируется, без проблем. Переоткрытие файла решило глюк.

 
Figar0:

И еще один сложнообъянимый глюк: Открыл метаедитором файл (вчера, build 209), - нет подсветки синтаксиса, файл редактируется, компилируется, без проблем. Переоткрытие файла решило глюк.


А меня такое редактор иногда думает что это комментарий и подсвечивает его серым. Это происходит в случае когда в тексте есть комментарий - /*. Происходит не всегда, но страшно раздражает.
 
cpp.tula писал (а):

А меня такое редактор иногда думает что это комментарий и подсвечивает его серым. Это происходит в случае когда в тексте есть комментарий - /*. Происходит не всегда, но страшно раздражает.


У меня тоже такое было. Я выгружал из памяти терминал и редактор кода. Потом запускал редактор заново и глюк исчезал.
 
Renat:
1-2 строки не помогут. Приведите достаточный код, на котором точно проявляется этот эффект, пожалуйста.
Да в том то и дело, что непонятно, какой код достаточный.
К достаточному коду добавляешь несколько строк комментария, и он перестает быть достаточным