빠진 함수 정의에 대해 링커 경고 메시지

기술노트 95495

아키텍처:

ARM, RH850, RX, SH, STM8, RL78

컴포넌트:

general

업데이트:

2021-07-15 오후 10:09

소개

사용자: 일부 함수를 선언하지 않았습니다. 그래서 실수로 함수의 정의와 동일한 함수에 대한 호출에서 다른 매개 변수를 가지고 있었습니다. 프로그램은 런타임에러로 끝났습니다.

사용자가 다음과 같이 물었습니다:

IAR ILINK 링커는 왜 경고를 해주지 않았나요?

배경

  • 문제/위험은 암묵적 선언(컴파일링 단위에 선언이 없음)이 사용될 때 발생한다.
  • (일부 IAR Embedded Workbench 제품에서 사용됨) UBROF 출력 형식과 비교했을 때, 이는 컴파일러와 링커가 사용하고 있는 ELF 형식의 제한이다.
  • IAR은 ELF에서 이 한계를 알고 있다.
  • IARILINK Linker에는 현재 이러한 유형의 검사를 생성할 계획이 없습니다.

해결방법

컴파일러가 다음을 활성화하여 이러한 문제를 찾도록 합니다:

Project > Options > C/C++ Compiler > Language > C dialect > Require prototypes

컴파일러 명령줄에서 사용할 옵션은 다음과 같습니다:

--require_prototypes

 

그런 다음 선언을 사용하여 헤더 파일을 만들고 함수를 정의하거나 호출하는 위치를 사용합니다.

 

모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.

죄송하지만, 당사 사이트에서는 Internet Explorer를 지원하지 않습니다.보다 편안한 사이트를 위해 Chrome, Edge, Firefox 등과 같은 최신 브라우저를 사용해 주시길 부탁드립니다.