|ARM Technical Support Knowledge Articles|
Applies to: C251 C Compiler
Information in this article applies to:
When generating/using two or more SRC files in a project that both use the same sbit definition, the linker generates a "MULTIPLE PUBLIC DEFINITIONS ERROR".
The Compiler has no idea what's going on in other source files, and so when it encounters the sbit definition, in converting it to assembly, generates a PUBLIC definition of it for the assembler. If it didn't default to this, you'd be forced to go to considerable lengths to declare a global variable in a module with inline assembly.
Declaring the sbit in question as an extern in the non-main C files will prevent the error and still provide linkage to the primary (sfr) declaration. You could handle this on a larger scale by having a separate header with externs of the sfrs for use in C files other than main, which will permit you to use them irrespective of the asm question, and without the attendant errors.
Article last edited on: 2004-06-08 10:33:20
Did you find this article helpful? Yes No
How can we improve this article?