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

How to declare a Struct for Multiple files?

At the risk of receiving a good thrashing, I need to ask a basic C code beginner's question:

I want to declare/define an array of struct in a .h file that assigns it to xdata memory.

/* Struct.h */
xdata struct mode { int x,y,z; };
struct mode xdata type[5];

main.c () {
struct_init();
modify_struct();
}

struct_init () {
type[0].x = 1;
type[0].x = 2;
type[0].x = 3;
etc...
}

modify_struct() {
type[0].x = newvalue;
etc...
}

I'm confused as to how to make the struct visible to multiple files without getting:
"Multiple Public Definitions" or
"Unresolved External Symbol" etc...
Any guidance from the experienced would be appreciated. Thanks

Parents
  • "I want to declare/define"

    STOP RIGHT THERE!

    The terms "declare" and "define" have distinct meanings in 'C'; they are not synonyms; they are not interchangeable.

    A correct understanding of the distinction is fundamental to answering your question.

    See this thread:
    http://www.keil.com/forum/docs/thread1847.asp
    (read it right through)

    And yes, you were right - this is a basic, standard, plain vanilla 'C' question - nothing specifically to do with 'struct', Keil or their C51 implementation.
    Consider yourself goodly thrashed! ;-)

Reply
  • "I want to declare/define"

    STOP RIGHT THERE!

    The terms "declare" and "define" have distinct meanings in 'C'; they are not synonyms; they are not interchangeable.

    A correct understanding of the distinction is fundamental to answering your question.

    See this thread:
    http://www.keil.com/forum/docs/thread1847.asp
    (read it right through)

    And yes, you were right - this is a basic, standard, plain vanilla 'C' question - nothing specifically to do with 'struct', Keil or their C51 implementation.
    Consider yourself goodly thrashed! ;-)

Children