FIX: Dependencies May Not Be Detected (119161)



The information in this article applies to:

  • Microsoft Visual Workbench for Windows, when used with:
    • Microsoft Visual C++ 1.0
    • Microsoft Visual C++ 1.5

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.
				

Modification Type:MinorLast Reviewed:8/16/2005
Keywords:kbbug kbfix kbide KB119161