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