Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
5203 / 3176 / 358
Регистрация: 12.12.2009
Сообщений: 8,036
Записей в блоге: 2
1

Код, который ломает MSVC компилятор (просто делюсь)

05.01.2016, 16:47. Показов 2292. Ответов 5
Метки нет (Все метки)

Привет!

Иногда приходится кое-что делать под виндой и сегодня случайно наткнулся на такой креш
C++
1
2
3
4
5
6
7
8
9
void f(const std::string &s)
{
 
}
 
int main()
{
    f({}); // <-- вот оно
}
Выхлоп компилятора
1>...: fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 227)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1>...: fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 227)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1>
1>LINK : fatal error LNK1000: Internal error during IMAGE::BuildImage
1>
1> Version 12.00.21005.1
1>
1> ExceptionCode = C0000005
1> ExceptionFlags = 00000000
1> ExceptionAddress = 584B640A (58240000) "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\c2.dll"
1> NumberParameters = 00000002
1> ExceptionInformation[ 0] = 00000000
1> ExceptionInformation[ 1] = 00000038
1>
1> CONTEXT:
1> Eax = 00000000 Esp = 00D8E318
1> Ebx = 0100A184 Ebp = 00D8E368
1> Ecx = 00000002 Esi = 00F00A90
1> Edx = 01003D44 Edi = 00000000
1> Eip = 584B640A EFlags = 00010202
1> SegCs = 00000023 SegDs = 0000002B
1> SegSs = 0000002B SegEs = 0000002B
1> SegFs = 00000053 SegGs = 0000002B
1> Dr0 = 00000000 Dr3 = 00000000
1> Dr1 = 00000000 Dr6 = 00000000
1> Dr2 = 00000000 Dr7 = 00000000
Интересно что ему так мозги сломало

Добавлено через 6 минут
g++ нормально съедает https://ideone.com/ewbaff
3
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2016, 16:47
Ответы с готовыми решениями:

Поля типа события с шаблонным параметром T ломает компилятор
type TExample&lt;T&gt; = class event f: Action&lt;T&gt;; constructor Create() := f += x -&gt;...

Где скачать компилятор msvc 2017 (С++11, 14, 17)?
Доброе утро! Не подскажите, где можно отдельно скачать компилятор msvc 2017 (С++11, 14, 17), без...

Настроить компилятор MSVC для использования в Qt Creator
Мужики помогите !! не могу понять как это настроить.... Установил Qtcreator .... И при простой...

Неизвестный padding, который ломает всю жизнь
Добрый вечер гуру HTML и CSS кода ^_^ При написании адаптивного меню столкнулся с такой проблемой....

5
Don't worry, be happy
17272 / 10144 / 1963
Регистрация: 27.09.2012
Сообщений: 25,383
Записей в блоге: 1
05.01.2016, 20:25 2
А здесь cl нормально кушает: http://rextester.com/DZHOI31246

Цитата Сообщение от Kastaneda Посмотреть сообщение
Интересно что ему так мозги сломало
Microsoft?
0
839 / 497 / 325
Регистрация: 29.12.2009
Сообщений: 1,106
05.01.2016, 22:36 3
g++ 4.8.4 и clang 3.4 нормально схомячили код

cl-ке смутили разум
0
Ушел с форума
Эксперт С++
16434 / 7398 / 1186
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
05.01.2016, 22:58 4
Kastaneda, версия компилятора какая?
У меня VS2008 и VS2010 (оба с SP1) скушали и не подавились.
1
Эксперт С++
8618 / 4179 / 929
Регистрация: 15.11.2014
Сообщений: 9,478
06.01.2016, 04:44 5
Цитата Сообщение от Убежденный Посмотреть сообщение
версия компилятора какая?
очевидно жеж:
Цитата Сообщение от Kastaneda Посмотреть сообщение
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\c2.dll"
Цитата Сообщение от Kastaneda Посмотреть сообщение
Version 12.00.21005.1

ради любопытства собрался на своих линейках:

-- The CXX compiler identification is MSVC 19.0.23506.0
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works

main.cpp(4): warning C4100: 's': unreferenced formal parameter
-- The CXX compiler identification is MSVC 18.0.31101.0
-- Check for working CXX compiler using: Visual Studio 12 2013 -- works

main.cpp(4): warning C4100: s: неиспользованный формальный параметр
-- The CXX compiler identification is MSVC 17.0.50727.1
-- Check for working CXX compiler using: Visual Studio 11 2012 -- works

main.cpp(4): warning C4100: s: неиспользованный формальный параметр
main.cpp(11): error C2143: синтаксическая ошибка: отсутствие ")" перед "{"
main.cpp(11): error C2660: f: функция не принимает 0 аргументов
main.cpp(11): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
main.cpp(11): error C2059: синтаксическая ошибка: )
-- The CXX compiler identification is MSVC 17.0.51025.0
-- Check for working CXX compiler using: Visual Studio 11 2012 -- works

CTP_Warning:
'Microsoft Visual C++ Compiler Nov 2012 CTP' is for testing purposes only.

main.cpp(4): warning C4100: 's' : unreferenced formal parameter

(using v120_CTP_Nov2012)
-- The CXX compiler identification is GNU 4.8.1
-- Check for working CXX compiler: mingw64/bin/g++.exe -- works
0
5203 / 3176 / 358
Регистрация: 12.12.2009
Сообщений: 8,036
Записей в блоге: 2
06.01.2016, 04:55  [ТС] 6
Цитата Сообщение от Убежденный Посмотреть сообщение
Kastaneda, версия компилятора какая?
Да, я что-то как нуб об ошибке сообщил "оно не работает"
У меня MSVC 13, а вот версию самого компилятора не могу посмотреть, пока под Linux'ом сижу. Но в ответе выше уже написали, что она из лога понятна.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2016, 04:55

IF ломает код
Здравствуйте! Имею код. Рабочий. Framework. При переносе системы на свой сервер появляются...

Prototype ломает код
function Func(){}; Func.ab = function(){ alert(5); } Func.ab() ; Доброго времени...

Поговорим о тёмной стороне memset, который ломает float массивы / Быстрая очистка flaot массива
Если делать memset на float* или double* массивах на всю длину массива, то эти float-ы становятся...

Почему в MSVC++ 2008 компилируется, а в MSVC++ 2010 вылезает много ошибок?
Кстати, перед запуском в 2010 предлагает конвертировать код. Ну а чем эти две студии отличаются,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru