FIX: C1001 - Internal Compiler Error on String Default Argument

ID: Q221585


The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, 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 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
Version : winnt:5.0sp3
Platform : winnt
Issue type : kbbug


Last Reviewed: March 12, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.