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.
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).
Actually no. I tried this:
extern void helloExit(int a); /* atExit function */ void displayExit(void) { helloExit(1); kprintf(1, " ended\n"); }
and in the other file:
void helloExit(void) { kprintf(1, " ended\n"); }
I checked with armcc 5.06 and get no linker error. Tried Clang 6.6.3, no error/no warning.