Mikle писал(а):Да, я читал твои статьи, в том числе и эту.
Странно, что этот "слегка модифицированный" компилятор ищет какой-то *.c файл по несуществующему пути, выводит текстовые сообщения с предложением читать Technical Support по плюсам, чего компилятор VB явно делать не должен. При модификации сообщения могли и почистить.
Он не ищет *.c-файл по несуществующему пути, он показывает место в собственных исходниках, откуда была сгенерирована ошибка.
e:\work\utc2\src\P2\x86\MDmisc.c, — это не несуществующий файл, который он ищет. Это один из файлов, образующих исходники компилятора Microsoft C/C++,
существовавший на машине человека (компилировавшего компилятор Microsoft C/C++) на момент сборки компилятора, а потому жестко вшитый в бинарник как раз для этих целей (вывод сообщений о ошибках).
Это просто результат работы сишного волшебного макроа
__FILE__ и
__LINE__, который заменяется на имя текущего файла и номер текущий строки, где бы в сишном коде оно не встретилось.
То есть там, в файле
e:\work\utc2\src\P2\x86\MDmisc.c в окрестности строки 2245 есть что-то такое:
- Код: Выделить всё
if(procedure->SizeOfAllLocalVars < 0)
{
DieWithFatalError(1001, __FILE__, __LINE__);
}
То есть как VB-шные
Err.Source и
Erl(), только всегда по делу, а не как в VB.
Mikle писал(а):с предложением читать Technical Support по плюсам
Не читать, а выбрать в Visual C++ команду Technical Support:
- vcpp_techsup.png (9.33 Кб) Просмотров: 1646
которая открывает страницу хелпа, где перечислены способы связаться с поддержкой — и сообщить им об обнаружении необработанной должном образом ошибки в компилторе.
чего компилятор VB явно делать не должен. При модификации сообщения могли и почистить.
Уверен, что команде, разрабатывающей VB, доступ к исходникам компилятора C/C++ даже не давали. Для них просто
C2.DLL, являющийся бэкенд-модулем для
CL.EXE переделали в
C2.EXE и выдали в виде «чёрного ящика», которому нужно скармливать IL-файлы.