Richard Heathfield wrote:
> Hal Vaughan said:
>
>> I know I saw the answer to this in a FAQ somewhere in the past week or
>> two, but now tat I need to know it, I can't find which FAQ it was in.
>>
>> I have a program that's grown to several files and I was compiling it
by
>> just using #include where necessary
>
> Hal, you need to find yourself a large hammer, preferably one with
> "ANAESTHETIC" written along the side... :-)
Yeah, the problem is I kind of hit the ground running and this is my
"intro"
project to the language and I'm squeezing it in between others, so I'm
reading as much as I can, but that means there's holes in what I pick up.
I'm just now getting to compiling info other than just "g++ -o myprog
myprog.cpp"
> Never use #include for source (admittedly for certain values of "never",
> but this is something that expert programmers are very loathe to do
except
> on very special occasions. You may deduce that newbies should not be
doing
> it *at all* - and it's certainly not necessary for them to do so).
Okay, gotcha. I'm finding out people in this group tend to have a higher
standard in many ways than elsewhere, which helps because I learn why
something isn't a good idea, even if "everyone else" is doing it.
>> How can I make sure several files can access the functions in a
separate
>> file without getting repeated definitions?
>
> In the source, you simply declare (but not define) the functions in a
> header, and #include the header into the sources that need to call those
> functions (and the source that defines them, as a safety check).
So I create protofunctions in a header and include that instead of the
actual source file, right?
> To make the files all work together, you have to "link" them.
>
> In gcc, it works like this:
>
> gcc ...lots of flags and stuff... -c -o foo.o foo.c
> gcc ...lots of flags and stuff... -c -o bar.o bar.c
> gcc ...lots of flags and stuff... -c -o baz.o baz.c
For some reason when I try gcc, I run into problems, so I've been using
g++.
I know it's to the same binary, but for some reason it only works as g++.
Are there implications to that which aren't obvious?
> -c means "just compile, don't try to link", and translates source files
to
> object files, but you don't get a program yet...
>
> gcc ...lots of flags and stuff... -o myprog foo.o bar.o baz.o
Okay, I was trying that, but without any header files with function
declarations. That's what I was missing!
> ...and now you link the object files together to get a program called
> myprog.
>
> But having said that, you're probably using an IDE, and nowadays you may
> well find that drag n' drop works just fine. :-)
I've installed the C and C++ stuff in Eclipse, but I've been using a text
editor and the command line for now, while I'm getting use to it. Eclipse
needed a make file and now that I'm finally building one, I may switch
over
to it. For me, just being able to find functions and refactor is a huge
help in itself!
Thanks!
Hal


|