BUG: Limitation w/ Disabling Warnings Above 4699 w/ #pragma (120968)



The information in this article applies to:

  • Microsoft Visual C++
  • Microsoft Visual C++, 32-bit Editions 1.0
  • Microsoft Visual C++, 32-bit Editions 2.0
  • Microsoft Visual C++, 32-bit Editions 4.0
  • Microsoft Visual C++, 32-bit Editions 4.1
  • Microsoft Visual C++, 32-bit Editions 4.2
  • Microsoft Visual C++, 32-bit Enterprise Edition 5.0
  • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
  • Microsoft Visual C++, 32-bit Professional Edition 5.0
  • Microsoft Visual C++, 32-bit Professional Edition 6.0
  • Microsoft Visual C++, 32-bit Learning Edition 6.0

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;
}
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbcode kbCompiler KB120968