INFO: Pointer to Undeclared Structure Does Not Generate Error

ID: Q50732


The information in this article applies to:
  • The Microsoft C/C++ Compiler (CL.EXE)
    • Microsoft C for MS-DOS, versions 5.1, 6.0, 6.0a, 6.0ax
    • Microsoft C for OS/2, versions 5.1, 6.0, 6.0a
    • Microsoft C/C++ for MS-DOS, version 7.0
    • Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5, 1.51
    • Microsoft Visual C++, 32-bit Editions, versions 1.0, 2.0, 2.1, 4.0, 5.0, 6.0


SUMMARY

Code that declares a pointer to a nonexistent structure compiles without warning or error. This is correct behavior.

Note that dereferencing a pointer to an undefined structure, or attempting to use a field, will produce errors. In general, you are allowed to make a reference to an undefined struct as long as the operation doesn't need to know the size of that struct or the names of its fields. This method of declaration is commonly used in linked lists.

Sample Code


   void main (void)
   {
      struct non_existent *ptr;         // legal
      struct x
      {
       struct x *previous;      // legal, note that struct x is
       struct x *next;          // not yet defined
      };
   } 

Additional query words: 8.00

Keywords : kbcode kbCompiler kbVC100 kbVC150 kbVC151 kbVC200 kbVC210 kbVC400 kbVC500 kbVC600
Version : MS-DOS:5.1,6.0,6.00a,6.00ax,7.0; WINDOWS:1.0,1.5,1.51; WINDOWS NT:1.0,2.0,2.1,4.0,5.0
Platform :
Issue type :


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