Re: external declares
Re: external declares
- Subject: Re: external declares
- From: Robert Dell <email@hidden>
- Date: Sat, 11 Feb 2006 15:16:35 -0500
the main question was is it something wrong with the compiler or is it something wrong with me. that's why i asked WHY. why did i have to declare external variables but not external structures in the include. should it make sense if i was to be forced to include one i should be forced to include others?
Charlton Wilbur wrote:
On Feb 10, 2006, at 8:25 PM, Robert Dell wrote:
they seem to think this is off topic for the cocoa list so i'll ask
here.
It's not really on topic here, because it's not XCode-specific: the
question would be the same if you were using Eclipse and gcc or Turbo C
or Microsoft Visual C++. For basic C questions like this one, the best
starting point is the comp.lang.c FAQ (http://c-faq.com/ index.html),
and if you're looking for good learning resources, you should start
with the comp.lang.c FAQ on that topic (http://c-faq.com/
resources/index.html).
Correctly partitioning your problem and diagnosing exactly what you're
having trouble with -- in this case, knowing that your problem is a
basic C problem and *not* a Cocoa, Carbon, or XCode problem -- is a
crucial skill to develop, because it saves you a lot of debugging time
and it saves other people a lot of annoyance. One very useful
diagnostic is to ask, if I changed out the component I think is the
problem, and on the support mailing lists of which I am considering
asking the question -- in this case, using Turbo C rather than XCode --
would the problem persist? If the answer is "yes," then that's not the
problem, and that's not where you should be asking the question.
That said, because I'm not so annoyed as to be completely unhelpful --
i broke up my 40,000 line program into smaller includes. one of
which is the reqs calculator section and all routines needed to do that.
i noticed i needed to declare my variables as external references
such as:
(within reqs.c)
extern long currentCircle;
extern long nextCircle;
extern long calcCircle;
This is probably sub-optimal design, especially if you're talking about
40,000 lines of code. There are very few instances in which variables
with a scope of more than a single file are a good idea. A better
solution is to define structures and prototype subroutines in header
files, and declare variables and implement the subroutines in code
files. Thus in a .h file you'd have (based on your example):
struct expskill
{
char skillname[80];
long skillvalue;
long skillreqs;
long skillneeded;
long skillexclude;
};
void do_something_with_expskill (struct expskill *exp, int foo, int bar);
int useful_calculation (int count, struct expskill in[]);
and you'd have somewhere in a .c file:
#include "foo.h"
int main ()
{
struct expskill myarmor[8], myweapon[25], mymagic[5], mysurvival
[15], mylore[13], myinstruments[5], swap;
/* ... */
do_something_with_expskill (&myarmor[0], 15, bar + quux);
gnorfle = useful_calculation (8, myarmor);
}
my next question is dumbfounding to me...
why did the compiler scream at me when i didn't declare "nextCircle"
as an external variable or at all because of "undeclared identifier"
but it allowed "myarmor[1].skillvalue"
where did it get it's information from to know myarmor is a structure
and it's dimensions but NOT know nextCircle is a simple longint value?
mind you, the compiler errored out before i added all the extern long
declarations.
Compilers frequently get confused once they hit a certain number of
errors; any errors past the first ones the compiler reports may be a
result of that confusion. I can't diagnose further without seeing the
actual code and the specific error messages.
Charlton
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden