2011-09-27 3 views
0

다른 응용 프로그램을 사용하여 파일에 코드 커버리지 도구 코드를 추가 할 수 있도록 사전 처리해야하는 C 소스 파일이 있습니다. 내가 GCC를 사용 이렇게하려면 (이 약간 수정 그래서 나는 LEON2 프로세서에이를 사용하고 있지만, 기본적으로 GCC 3.4.4입니다) 다음 명령 줄 :GCC를 사용한 전처리 C 코드

sparc-elf-gcc -DUNIT_TEST -I. ../Tested_Code/0_BSW/PKG_CMD/MEMORY.c -E > MEMORY.i 

표준 파일은이 작품 완벽하지만이 프로그래머는 #ifndef UNIT_TEST을 닫았으며 코드를 처리하더라도 사전 처리되지 않습니다. 내가 왜 -DUNIT_TEST을 명시 적으로 정의하는 GCC에 전달했는지 이해할 수 없다.

이 문제를 일으킬 수있는 단서가있는 사람이 있습니까? 결과 .i 파일을 확인하고 내 UNIT_TEST 코드가 없으므로 오류가 발생합니다.

답변

2

#ifndef에 래핑 된 내용은 정의되지 않은 경우에만 구문 분석되므로 해당 블록 안에있는 모든 코드를 가져 오려면 해당 정의를 제거해야합니다. 사전 처리 시간 기호가 정의되어 있지 않은 경우 GCC는 모든 #ifdef 및 #ifndef에 대한 사전 처리 된 정보를 유출 할 수 없습니다.

+0

고마워 예수님, 제가 게시 한 직후에 제 문제를 이해했습니다. 이른 아침에 여기 있습니다 : P 시간 낭비를해서 죄송합니다 ... idef 대신 ifndef를 사용하는 제 코더 ... – Leo

+0

괜찮습니다. 코드를 쳐다 보면서 비명을 지르기 전에 왜 그것이 바보 같은 실수인지 깨닫지 못했습니다. –