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 :
|