Microsoft KB Archive/104672

From BetaArchive Wiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Knowledge Base


You receive compiler errors when you compile a file that includes a C++ header file in a C program

Article ID: 104672

Article Last Modified on 4/24/2006



APPLIES TO

  • Microsoft Visual C++ 1.0 Professional Edition
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 1.51
  • Microsoft Visual C++ 1.52 Professional Edition
  • Microsoft Visual C++ 1.0 Professional Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 6.0 Service Pack 5
  • Microsoft Visual C++ 5.0 Standard Edition



This article was previously published under Q104672


SUMMARY

The following error is typically the first of many returned by the Microsoft C/C++ Compiler when attempting to compile a file that includes a C++ header file such as IOSTREAM.H in a C program:

ios.h(33) : error C2282: 'class' is followed by 'streambuf'. (missing ','?)

In more recent versions of the compiler, the system header files use #ifdef __cplusplus to prevent the contents from being parsed when compiled as "C" code.

There may also be multiple C2065, C2297, C2054, C2085, C2143, and C2144 errors, and eventually a C1003 error indicating that the error count reached 100.

MORE INFORMATION

The C/C++ compiler invokes either the C compiler or the C++ compiler according to the file's extension. If it ends in .C, the C compiler is invoked; if it ends in .CPP or .CXX, the C++ compiler is invoked.

To invoke the C++ compiler on a file that ends in .C or some other extension, use the /Tp switch to explicitly specify a C++ source file.

The sample code below produces the errors

error C2065: 'cout' : undeclared identifier
error C2297: '<<' : illegal, right operand has type 'char [12]'

if compiled with:

   cl hello.c
                

The code compiles fine if compiled with:

   cl hello.cpp
                

-or-


   cl /Tp hello.c
                

Sample Code

/* Compile options needed:  None
*/ 

#include <iostream.h>

void main (void)
{
     cout << "Hello World";
}
                


Additional query words: 8.00 8.00c 9.00 9.10

Keywords: kbhowto kbinfo kbprogramming kbcpponly kbcompiler KB104672