grunwald@m.cs.uiuc.edu (11/04/88)
The problem with +e0 is that if a library routine has something like:
--Bar.h--
class Foo;
class Bar {
Foo *instance
public:
Bar()
}
--Bar.cc--
Bar::Bar()
{
instance = new Foo;
}
and you compile Bar.cc with +e0, and your program never references ``Foo.h'',
your constructor doesn't get created.
This is one of the problems of compiling directly to C code. You really
want to pass information to the loader in the form of ``stabs'' or COFF
info saying ``hey, I'm using class Foo'' and ``Foo has the following vtbl''.
Then, the loader can sort through these entries, producing a single vtbl
at compile time.coggins@retina.cs.unc.edu (Dr. James Coggins) (11/11/88)
In article <4800042@m.cs.uiuc.edu> grunwald@m.cs.uiuc.edu writes: > >The problem with +e0 is that if a library routine has something like: > ... then you miss including a header that you really need. You are quite right. A method for making sure that the correct headers DO get included is described in a later article of the Managing... series. Our header management techniques work fine together with +e0 and +e1. If you missed it, send me e-mail to get a copy. James Coggins coggins@cs.unc.edu