Возвращаемое программой cl.exe значение
Программа cl.exe возвращает нулевое значение в случае успешного выполнения (отсутствия ошибок) и ненулевое значение во всех остальных случаях.
Возвращаемое программой cl.exe значение может использоваться при компиляции из файла скрипта, файла powershell, CMD-файла или BAT-файла. Рекомендуется перехватывать выходные данные компилятора, чтобы при необходимости использовать их для устранения возникающих ошибок или предупреждений.
В программе cl.exe предусмотрено слишком много возможных кодов ошибок завершения cl.exe, чтобы можно было их все перечислить. Код ошибки можно найти в файлах winerror.h или ntstatus.h, включенных в пакет средств разработки программного обеспечения Windows, в каталоге %ProgramFiles(x86)%\Windows Kits\version\Include\shared\. Коды ошибок, возвращенные в виде десятичного числа, для поиска необходимо преобразовать в шестнадцатеричный вид. Например, код ошибки -1073741620 преобразуется в шестнадцатеричный код 0xC00000CC. Эта ошибка найдена в ntstatus.h, где соответствующее сообщение — "Указанное имя общей папки не удается найти на удаленном сервере". Список скачиваемых кодов ошибок Windows см. в разделе [MS-ERREF]
"Коды ошибок Windows".
Для выяснения значения ошибки компилятора можно также использовать программу поиска ошибок в Visual Studio. В командной оболочке Visual Studio введите errlook.exe , чтобы запустить программу; или в интегрированной среде разработки Visual Studio в строке меню выберите "Сервис", "Поиск ошибок". Введите значение ошибки, чтобы найти связанный с ней описательный текст. Дополнительные сведения см . в справочнике по ERRLOOK.
Замечания
Ниже приведен пример BAT-файла, в котором используется значение, возвращаемое программой cl.exe.
echo off
cl /W4 t.cpp
@if ERRORLEVEL == 0 (
goto good
)
@if ERRORLEVEL != 0 (
goto bad
)
:good
echo "clean compile"
echo %ERRORLEVEL%
goto end
:bad
echo "error or warning"
echo %ERRORLEVEL%
goto end
:end