Knowledge Base

FIX: Dependencies May Not Be Detected

Article ID: 119161

Article Last Modified on 8/16/2005


APPLIES TO


This article was previously published under Q119161

SYMPTOMS

When a project includes header files that include each other, not all of the dependencies are detected. This can cause the Visual Workbench to report that a source file is up to date when it is not up to date.

RESOLUTION

You may need to include some header files directly in the source file instead of in a header file. Please see the "MORE INFORMATION" section, below, for details.

STATUS

Microsoft has confirmed this to be a bug in the products listed at the beginning of this article. This problem was corrected in Visual C++ version 2.0.

MORE INFORMATION

Situation 1

The problem can be seen in the following situation:
// sample1.cpp

   #include "sample1.h"

// sample2.cpp

   #include "sample2.h"

// sample1.h

   #ifndef _SAMPLE1_H
   #define _SAMPLE1_H
   #include "sample2.h"
   #include "test1.h"
   #endif

// sample2.h

   #ifndef _SAMPLE2_H
   #define _SAMPLE2_H
   #include "sample1.h"
   #include "test2.h"
   #endif

// test1.h
// nothing required for this sample.

// test2.h
// nothing required for this sample.
				
The dependencies generated for this .MAK file will be as follows:
   SAMPLE1_DEP = \ 
       c:\sample\sample1.h
       c:\sample\sample2.h
       c:\sample\test2.h
       c:\sample\test1.h

   SAMPLE2_DEP = \ 
       c:\sample\sample2.h
       c:\sample\sample1.h
       c:\sample\test2.h

SAMPLE2_DEP should also include c:\sample\test1.h
				

Situation 2

The correct dependencies are generated when you make the following changes:
// sample1.cpp

   #include "test2.h"
   #include "sample1.h"

// sample2.cpp

   #include "test1.h"
   #include "sample2.h"

// All other files are unchanged.
				

Additional query words: 1.00 1.50 1.10

Keywords: kbbug kbfix kbide KB119161