Q120968: BUG: Limitation w/ Disabling Warnings Above 4699 w/ #pragma

Article: Q120968
Product(s): Microsoft C Compiler
Version(s): 1.0,2.0,4.0,4.1,4.2,5.0,6.0
Operating System(s): 
Keyword(s): kbcode kbCompiler kbVC500bug
Last Modified: 15-FEB-2002

-------------------------------------------------------------------------------
The information in this article applies to:

- The C/C++ Compiler (CL.EXE), included with:
   - Microsoft Visual C++ 
   - Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 4.0, 4.1, 4.2 
   - Microsoft Visual C++, 32-bit Enterprise Edition, versions 5.0, 6.0 
   - Microsoft Visual C++, 32-bit Professional Edition, versions 5.0, 6.0 
   - Microsoft Visual C++, 32-bit Learning Edition, version 6.0 
-------------------------------------------------------------------------------

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 this to be a bug in the Microsoft products 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          : kbcode kbCompiler kbVC500bug 
Technology        : kbVCsearch kbAudDeveloper kbCVCComp
Version           : :1.0,2.0,4.0,4.1,4.2,5.0,6.0
Issue type        : kbbug

=============================================================================