INFO: Pointer to Undeclared Structure Does Not Generate Error (50732)



The information in this article applies to:

  • Microsoft C for MS-DOS
  • Microsoft C for OS/2
  • Microsoft Visual C++ for Windows, 16-bit edition 1.0
  • Microsoft Visual C++ for Windows, 16-bit edition 1.5
  • Microsoft Visual C++ for Windows, 16-bit edition 1.51
  • Microsoft Visual C++, 32-bit Editions 1.0
  • Microsoft Visual C++, 32-bit Editions 2.0
  • Microsoft Visual C++, 32-bit Editions 2.1
  • Microsoft Visual C++, 32-bit Editions 4.0
  • Microsoft Visual C++, 32-bit Editions 5.0
  • Microsoft Visual C++, 32-bit Editions 6.0

This article was previously published under Q50732

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

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbcode kbCompiler kbinfo KB50732