컴파일러의 출력을 구문 분석하고 오류 메시지를 다시 포맷하여 사용하는 IDE (Visual Studio)에서 구문 분석 할 수있는 간단한 프로그램을 작성하고 있습니다 . 우리는 구축 nmake
를 사용하고,이 같은 명령 줄을 사용하여 컴파일러를 호출합니다 : 파이프 명령 줄에서 첫 번째 프로그램의 반환 코드를 사용하는 방법
cc166.exe SOME_FLAGS_HERE MyCFile.c 2>&1 | TaskingVXToVisualReformat.exe
이제 문제는 컴파일러,
cc166
의 리턴 코드가,
nmake
다시 공급되지 않는 것입니다. 리 포맷 프로그램의 리턴 코드 만 사용됩니다. 즉, 리 포맷 프로그램에서 0을 반환하면 nmake는 중단하지 않고 빌드를 계속 진행합니다. 컴파일러 (
cc166.exe
)의 리턴 코드를
nmake
으로 어떻게 피드백 할 수 있습니까?
제 형식 프로그램이 컴파일러의 반환 코드를 읽고 자체 리턴 코드를 결정할 때 사용할 수있는 방법이 있습니까? 리 포맷 터는 C#으로 작성되었습니다.
이것은 질문에 대답하지 않습니다. cc166이 성공하면 최종 리턴 코드도 성공한 것처럼 보입니다. 하지만 실패하면 다시 작성자의 반환 코드가 여전히 사용됩니다. 따라서 cc166이 실패하고 reformator가 "성공"의 총 수익률에서 성공합니다 ("실패"해야 할 때). 또한 cc166의 유일한 실패는 return of 1 –
Windows 쉘 반환 코드 0은 성공이고 다른 값은 실패합니다. "errorlevel 1이 아닌 경우"조건은 첫 번째 명령이 0을 반환하면 실제로 성공합니다. Windows의 경우 "errorlevel 1"은 "오류 코드 1보다 크거나 같음 – SlavaGu
cc166이 1 (또는 2, 3 등)을 반환하고 'TaskingVXToVisualReformat.exe'가 0을 반환하면 어떻게 될지 생각합니까? 전체 스크립트가 a를 반환하지 않습니다. 성공, 사실 cc166 실제로 실패에도 불구하고? –