Path: utzoo!utgpu!utstat!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!decwrl!megatest!djones From: djones@megatest.UUCP (Dave Jones) Newsgroups: comp.lang.c Subject: Re: Recursive #includes Message-ID: <2562@goofy.megatest.UUCP> Date: 2 Mar 89 00:48:54 GMT References: <9752@smoke.BRL.MIL> Organization: Megatest Corporation, San Jose, Ca Lines: 32 From article <9752@smoke.BRL.MIL>, by gwyn@smoke.BRL.MIL (Doug Gwyn ): > In article <2538@goofy.megatest.UUCP> djones@megatest.UUCP (Dave Jones) writes: >>By what rationale can the first .h be said to depend on the second? > > The first .h depends on the second, because for all X, if X depends on > the first .h, then X depends on the second. You're bluffing! The premise follows from the conclusion, but it doesn't work the other way 'round. (Show your work in the margin, or on a separate sheet.) You said in an earlier posting that the conclusion follows from the transitive property of "depend", but it doesn't. I really don't have a clue as to what "depend" means to you, but it's sure not the way _make_ defines it in the manual or on the man-page, and which, I might add, is also the way my dictionary defines it: "to exist by virtue of some necessary relation." > That is a logical dependency, > not a physical one. No action is required to update the first .h if the > second is changed (although as someone else pointed out, until a "touch" > is done on the first .h to "update" it, the effect of changing the second > will continue to be propagated toward the dependents of the first .h by > "make", resulting in unnecessary rebuilding of dependents of the first .h). > If you touch the first .h in the rule, then the first .h depends on the second, and _make_ will function as advertised.