빠진 함수 정의에 대해 링커 경고 메시지
기술노트 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
그런 다음 선언을 사용하여 헤더 파일을 만들고 함수를 정의하거나 호출하는 위치를 사용합니다.
모든 제품 이름은 해당 소유자의 상표 또는 등록 상표입니다.