ARM Technical Support Knowledge Articles


Applies to: A251 Macro Assembler


Information in this article applies to:


When generating or using two or more SRC files in a project, and both files 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-10 15:10:13

Rate this article

Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential