Knowledge Base

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

Article ID: 133070

Article Last Modified on 7/5/2005


APPLIES TO


This article was previously published under Q133070

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 kblangcpp kbprb KB133070