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

Unresolved external

I started a new project with an LPC2106 cpu.
There are two files in it: blinky.c and time.c
In Blinky.c I declare:

extern void init_time(void);

And call it in the main function.
Function is written in time.c

When I link I get a undefined symbol report on init_time

If I look at blinky.lst I can see a call to a external symbol called: "Z9init_timev"
And if I look at time.lst I can see a global symbol "init_time"

Anyone know what I am doing wrong???

Parents
  • But "Unix" is also the source of most if not all of those other extensions as well. There had to be some sub-culture that thought .C was a great idea. It's even more cute than .cxx. (See, the plus signs in .c++ are rotated 45 degress and become x's...) So I was wondering, which "Unix", or school? Is it AT&T thing, or Berkeley, or MIT, or Sun, or NeXT-ish?

    Relying only upon case to distinguish two identifiers is a poor design choice, IMO. I remember once having to deal with some code where the author liked to declare things "Static", which was of course variably #define'd to mean almost completely not what you thought it did. Or imagine filling up your 8051 code with references to "p0" and "ie" that are just ordinary data. Why doesn't "ResetCPUWatchdog()" do the same thing as "ResetCpuWatchdog()", and are you really going to remember that late at night before the deadline? Should "RM -f" (read memory, fast) really exist in your shell next to "rm -f"?

    There's a reason stricmp() and friends exist.

Reply
  • But "Unix" is also the source of most if not all of those other extensions as well. There had to be some sub-culture that thought .C was a great idea. It's even more cute than .cxx. (See, the plus signs in .c++ are rotated 45 degress and become x's...) So I was wondering, which "Unix", or school? Is it AT&T thing, or Berkeley, or MIT, or Sun, or NeXT-ish?

    Relying only upon case to distinguish two identifiers is a poor design choice, IMO. I remember once having to deal with some code where the author liked to declare things "Static", which was of course variably #define'd to mean almost completely not what you thought it did. Or imagine filling up your 8051 code with references to "p0" and "ie" that are just ordinary data. Why doesn't "ResetCPUWatchdog()" do the same thing as "ResetCpuWatchdog()", and are you really going to remember that late at night before the deadline? Should "RM -f" (read memory, fast) really exist in your shell next to "rm -f"?

    There's a reason stricmp() and friends exist.

Children
No data