Article: Q221585
Product(s): Microsoft C Compiler
Version(s): winnt:5.0sp3
Operating System(s):
Keyword(s): kbVS97sp3bug
Last Modified: 07-MAY-2001
-------------------------------------------------------------------------------
The information in this article applies to:
- Microsoft Visual C++, 32-bit Enterprise Edition, version 5.0sp3
- Microsoft Visual C++, 32-bit Professional Edition, version 5.0sp3
-------------------------------------------------------------------------------
SYMPTOMS
========
Compiling code with a default argument for a string parameter in a function
declaration results in the following:
Test.cpp() : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'msc1.cpp', line 1188)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
CAUSE
=====
This bug was introduced in Visual Studio 97 Service Pack 3. It was not in
earlier versions of Visual C++ 5.0.
RESOLUTION
==========
Either upgrade to Visual C++ 6.0, or define a string in the file before the
function declaration.
STATUS
======
Microsoft has confirmed this to be a problem in the Microsoft products that are
listed at the beginning of this article.
This bug was corrected in Microsoft Visual C++, version 6.0.
MORE INFORMATION
================
The following sample code demonstrates the problem and the workaround:
#include <string>
using namespace std ;
// Uncomment the following line to work around the problem
//static std::string empty = "";
void test( string sname = "" );
void main()
{
test( ) ;
}
Note that the empty string declaration must be in the same translation unit as
the function declaration.
Additional query words:
======================================================================
Keywords : kbVS97sp3bug
Technology : kbVCsearch kbAudDeveloper kbVC32bitSearch kbVC500SP3 kbVC500Search
Version : winnt:5.0sp3
Issue type : kbbug
Solution Type : kbfix
=============================================================================