FIX: C1001 p2symtab.c, line 2221 In Direct Init of Static (168383)



The information in this article applies to:

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

This article was previously published under Q168383

SYMPTOMS

When a member of an imported class attempts direct initialization of a static local variable of class type with a constant string literal, the following error may result:
fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\utc\src\\P2\p2symtab.c', line 2221)
Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information Error executing cl.exe.

RESOLUTION

Simplify the expression. Declare a local static constant string literal, then use that local to initialize the static local variable of class type.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual C++ version 6.0 for Windows.

MORE INFORMATION

Steps to Reproduce Behavior

   // compiler options needed: /c

   struct A
   {

    A(const char * a);

   };

   struct __declspec(dllimport) B
   {

    void f() {
        static A isa = "...";

        // A workaround is to break up the expression
        //static const char *p = "...";
        //static A isa = p ;
    } ;
   };
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbCompiler kbCPPonly kberrmsg kbfix kbVC600fix KB168383