Microsoft KB Archive/120968

From BetaArchive Wiki

Article ID: 120968

Article Last Modified on 7/5/2005



APPLIES TO

  • Microsoft Visual C++ 6.1
  • Microsoft Visual C++ 1.0 Professional Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++ 6.0 Standard Edition



This article was previously published under Q120968

SYMPTOMS

Disabling a warning with #pragma warning will not succeed if the pragma is placed within the function where the warning occurs and the warning has a value of 4700 or greater.

CAUSE

Warnings greater than 4699 are generated by the second and third passes of the compiler.

RESOLUTION

To disable warnings with a value of 4700 or greater, place the #pragma warning outside of any function.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Sample Code

The following sample code demonstrates the problem:

/* Compile options needed: /W4
*/ 

float big;
float big2;
int junk1;

/* Use this pragma instead of the one below to disable all
warnings     */ 
/* #pragma
warning(disable:4756;disable:4706;disable:4699;disable:4244)
*/ 

void main(void)
{
   int i;

/* This pragma will disable only the warnings < 4699 because
of its placement within the function body */ 

#pragma
warning(disable:4756;disable:4706;disable:4699;disable:4244)

   big = +1.0e+99;
   big2 = +1.1e+99;
   junk1 = i;
   if( i=0 )
      i=0;
}
                


Additional query words: 8.00 8.00c 9.00 10.00 10.10 10.20

Keywords: kbbug kbcode kbcompiler KB120968