This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

EWARM linker function redefinition problem

In one 'c' file I define the following function:

void fnTemp(int jj, int kk);

void fnTemp(int jj, int kk)

{

     ...do some stuff...

}

In a different 'c' file I have the following:

extern void fnTemp(int jj);

void fnTryIt(void)

{

    fnTemp(3);

}

This will link without any errors. How do I get the linker to tell me that I have two definitions for fnTemp()?

I know that I could put the declaration for fnTemp() in a .h file and include the .h file in both .c files which will then trigger a compiler error. But I have an instance where that can cause other issues.

Thank you for any help.

Parents
  • I am surprised the linker does not throw an error - I see you are using IAR tools, but armlink from the Arm Compiler for Embedded toolchain emits:

    Error: L6200E: Symbol fnTemp multiply defined (by foo2.o and foo1.o).

Reply
  • I am surprised the linker does not throw an error - I see you are using IAR tools, but armlink from the Arm Compiler for Embedded toolchain emits:

    Error: L6200E: Symbol fnTemp multiply defined (by foo2.o and foo1.o).

Children