FIX: C1001 - Internal Compiler Error on String Default Argument (221585)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Enterprise Edition 5.0 SP3
  • Microsoft Visual C++, 32-bit Professional Edition 5.0 SP3

This article was previously published under Q221585

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 that this is 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.

Modification Type:MinorLast Reviewed:9/23/2005
Keywords:kbHotfixServer kbQFE kbBug kbfix KB221585