Linker warnings for missing function declaration

Technical Note 95495

Arkitekturer:

ARM, RH850, RX, SH, STM8, RL78

Komponent:

general

Uppdaterad:

2015-11-06 13:29

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.

The user asked:

Why didn't the IAR ILINK 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.

Det här innehållet finns tyvärr inte på svenska.

Vår webbplats finns främst på vårt koncernspråk engelska, förutom det innehåll för investerare som vi är lagstadgade att kommunicera på svenska. Vi rekommenderar att du besöker vår globala webbplats på engelska för att få en bättre upplevelse.

Vi stöder inte längre Internet Explorer. För att få bästa möjliga upplevelse av iar.com rekommenderar vi att du uppgraderar till en modern webbläsare som Chrome eller Edge.