PRB: C2059 Error Using extern "C" in .C Source Files

ID: Q133070


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++, 32-bit Editions, versions 2.0, 2.1, 2.2, 4.0, 5.0


SUMMARY

Use of "extern "C"" in source files that have a .C extension causes error C2059, and results in this error message:

error C2059:syntax error:'string'


CAUSE

In the C language, the string-literal "C" is not recognized. It is used in C++ to prevent name decoration.


RESOLUTION

Remove the string-literal "C" in extern declarations, or use the following in the function declaration:


#ifdef __cplusplus
   extern "C"
#endif 


STATUS

This behavior is by design.


MORE INFORMATION

Sample Code to Reproduce Behavior


/* Compile options needed: None
   The following program reproduces the behavior if the source
   file has .C extension
*/ 

#include <windows.h>

extern "C" _declspec(dllexport) BOOL WINAPI function1(void);

BOOL WINAPI DllMain ( HINSTANCE hInst, DWORD dwReason,
                        LPVOID lpReserved)
{
   // Other required code goes here.
   return TRUE;
} 

Additional query words: 9.0 9.00 9.1 9.10

Keywords : kberrmsg kbLangC kbLangCPP kbVC200 kbVC210 kbVC220 kbVC400 kbVC410 kbVC500 kbVC600
Version : winnt:2.0,2.1,2.2,4.0,5.0
Platform : winnt
Issue type : kbprb


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