Linker warnings for missing function declaration

Technical Note 95495

Targets:
ARM, RH850, RX, SH, STM8, RL78

Component:
General

Updated:
9/9/2013 3:26 PM

Introduction

From a user : I had missed to declare some functions. So, by mistake, I had different parameters in the definition of the function and the call(s) to the same function. My application ended up with a difficult-to-find-run-time error.

My question is:

Why didn't the IAR ILINK Linker linker warn me?

Background

  • The problem/risk occur when implicit declarations (no declaration in the compiling unit) are used.
  • Compared to the UBROF output format (used in some IAR Embedded Workbench products), this is a limitation with the ELF format that the compiler and linker are using.
  • IAR is aware of this limitation in ELF.
  • There are no plans for the moment to create this kind of type check in IAR ILINK Linker.

Solution

Let the compiler find these problems, by enabling:

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

On the compiler command line, the option to use is:

--require_prototypes

Then, create a header file with the declarations and use that wherever functions are defined or called.

 

All product names are trademarks or registered trademarks of their respective owners.

Related Tech Notes

© IAR Systems 1995-2016 - All rights reserved.