2013-04-24 10 views
1

나는 ACC 컴파일러를 사용하여 HP-UX 시스템에서 콘솔 C 응용 프로그램을 컴파일하려고 [HP C/AC++ B3910B A.06.26] 항상 다음 오류와 함께 실패 국지적 인 편집 :식별자 "현재 snprintf은"정의되지

******"Common/Common.c", line 153: error #2020: identifier "snprintf" is undefined 
      snprintf(BufferMessage, MSG_SIZE, 
     ^
1 error detected in the compilation of "Common/Common.c". 
gmake: *****[Common/Common.o] Error 2******** 

그러나 Common.C 파일에는 일반적으로 snprintf 메소드가 포함 된 라이브러리가 포함되어 있습니다. 이 아이디어를 해결할 수있는 아이디어가 있습니까? 모든

답변

4

snprintf()에 미리 덕분에 C99에 도입되었고, <stdio.h>에 정의되어 있으므로 컴파일러는 C 표준의 해당 버전을 지원해야합니다. C99을 지원하지 않으면 대신 sprintf()을 사용하십시오.

+0

이것은 C99를 지원하기 위해 문서화 된 컴파일러의 버전 6입니다. – paxdiablo

+0

@paxdiablo, 나는 그 컴파일러에 익숙하지 않다. 필요한 컴파일러 스위치는'gcc'와 같은가? – hmjd

+0

HP에 따르면 [HP C/aC++ B3910B A.06.26] 컴파일러는 C99을 지원합니다. 우리는 단지 컴파일하려고하는 앱을 개발하지 않고 있습니다. 동일한 HP 컴파일러의 이전 버전을 사용하여 동일한 코드를 컴파일하려고 시도했기 때문에 이것은 다소 기이합니다. 감사합니다. – jamel

2

HPUX C 컴파일러 버전 6은 C99 호환이지만 스위치를 활성화해야 사용할 수 있습니다.

6.20 릴리스 노트는 다음 릴리스에서 기본 모드를 C89에서 C90으로 전환해야하며 6.26을 실행 중임을 명시했습니다. 그것은 6.25 다음 릴리스였던 6.25에서 일어난 것처럼 보입니다.

당신 수있는 도움이 있는지 확인하기 위해 (C99 기본이라고 지금 또는 cc -Ae) cc -AC99를 사용하여 C99 모드. 기본 컴파일 모드가 C99인데도 C++보다는 C로 지정해야 할 수도 있습니다.

몇 가지 다른 확인 사항 : 당신이 stdio.h 헤더를 포함 한 경우

  • 참조.
  • printf과 비슷한 문제가 있는지 확인하십시오.이 문제는 해당 헤더에도 있습니다.
  • 사전 처리기 출력 (cc -E)을 생성하는 컴파일러를 실행하고 어딘가에 정의되어 있는지 확인하십시오.
+0

좋은 사람입니다 "실종됐다. 많은 감사 인사와 ALL에 감사드립니다! – jamel

+1

@jamel, 그것은 C++ 모드로 컴파일 중일 수 있습니다. 그것이 '-Ae'가 그것을 고칠지를 보는 것이 흥미로울 것입니다. 앞서 언급했듯이, 디폴트 C 컴파일 모드는 6.25에서와 같이 C99이지만, 여전히 C로 말해야 할 수도 있습니다.그리고 이것이 진정으로 해결책이라면, 당신은 상향 회답하고/또는 받아들이기로되어있어서 정확한 답이 정상에 오르는 것입니다 - 그것이 SO가 어떻게 작동 하는지를 나타냅니다. – paxdiablo