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

.h file need include in two c source files

Hello,
I have two c source files in my project, and they both need include hardware.h(register define) file. I try to include the .h file to both C file but the compilter says the memory overlap. I choice include .h file to the main C file ,the compiliter says another c file's register not define.
How to avoid it ,
thanks a lot.

Parents
  • Still not quite right: do not put the _at_ in the header file - that just goes in the definition; only name & type are required in the declaration

    As I've said before, if you #include the header in the 'C' file, it will give you the advantage of allowing the compiler to warn you if there's any mismatch:

    //My.c
    #include "my.h" // allows the compiler to "see" both declarations & definitions
                    // and thus to report any mismatch!
    
    unsigned char xdata A_register _at_ 0x0010; // A message will be given if this definition
                                                // does not match the preceding declaration in
                                                // the header!
    
    unsinged char xdata B_register _at_ 0x0020;

Reply
  • Still not quite right: do not put the _at_ in the header file - that just goes in the definition; only name & type are required in the declaration

    As I've said before, if you #include the header in the 'C' file, it will give you the advantage of allowing the compiler to warn you if there's any mismatch:

    //My.c
    #include "my.h" // allows the compiler to "see" both declarations & definitions
                    // and thus to report any mismatch!
    
    unsigned char xdata A_register _at_ 0x0010; // A message will be given if this definition
                                                // does not match the preceding declaration in
                                                // the header!
    
    unsinged char xdata B_register _at_ 0x0020;

Children