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

Keil Compiler error

I have a project to be programmed on to my LPC 2148.(1 main.c and a couple f header files)

I have made a couple of header files.

I declared a constant in the first header file(say a.h )and included the file in the second header file (say b.h).

now when I compile,wherever i used the constant in b.h,I get the error telling me that the constant is undeclared even though it is declared in the header file which is included in this file.

How can I get around the following error ?I have a lot of constants declared over a set of 22 header files.

Any help is greatly appreciated.

Thanks in advance .

Parents
  • I have the following lines in a .h file (named hci.h)

    #define HCI_CMND_SOCKET 0x1001
    

    Just to clarify this: that is not a declaration, which you had said you had put in your header file. That's a preprocessor definition.

    So I wrote something like this at the beginning of the socket.c file

    #include "hci.h"
    

    "Something like that" might not suffice. So what did you actually write?

    You're looking at a preprocessing problem. Almost invariably the solution to those is to capture and inspect the preprocessor's output. How to get at that is described in your compiler's manual.

    In the case at hand, one of the things you need to look at very closely is which file named "hci.h" your compiler picked up by that #include line. A quick check whether you're even looking at the right file is to put a line like this

    #error "If you do not see this message, you did not include this file!"
    

    at the very beginning of your hci.h and see if you get the expected message when you compile again.

Reply
  • I have the following lines in a .h file (named hci.h)

    #define HCI_CMND_SOCKET 0x1001
    

    Just to clarify this: that is not a declaration, which you had said you had put in your header file. That's a preprocessor definition.

    So I wrote something like this at the beginning of the socket.c file

    #include "hci.h"
    

    "Something like that" might not suffice. So what did you actually write?

    You're looking at a preprocessing problem. Almost invariably the solution to those is to capture and inspect the preprocessor's output. How to get at that is described in your compiler's manual.

    In the case at hand, one of the things you need to look at very closely is which file named "hci.h" your compiler picked up by that #include line. A quick check whether you're even looking at the right file is to put a line like this

    #error "If you do not see this message, you did not include this file!"
    

    at the very beginning of your hci.h and see if you get the expected message when you compile again.

Children
  • Dear Mystery IITian,
    Kindly dont expect the people to solve your problems if you are not willing to share them.

    Kindly help us understand your problems clearly as you are facing them. this Reduces Human efforts, Time (yours and more importantly OURS) and yielding the best solution in the shortest amount of time.

    Why secrecy? Ashamed of people making mockery "He calls himself an IITian and doesnt even know this stuff...