Microsoft KB Archive/168383

From BetaArchive Wiki

Article ID: 168383

Article Last Modified on 7/5/2005



APPLIES TO

  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition



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 ;
    } ;
   };
                

Keywords: kberrmsg kbbug kbfix kbvc600fix kbcpponly kbcompiler KB168383