error: expected unqualified-id on extern "C"
10,594
The extern "C"
linkage specification is something you attach to a function declaration. You don't put it at the call site.
In your case, you'd put the following in a header file:
#ifdef __cplusplus
extern "C"
{
#endif
void function_in_C(char const *); /* insert correct prototype */
/* add other C function prototypes here if needed */
#ifdef __cplusplus
}
#endif
Then in your C++ code, you just call it like any other function. No extra decoration required.
char const * data = ...;
function_in_C(data);
Author by
Laurent Crivello
Updated on June 28, 2022Comments
-
Laurent Crivello almost 2 years
I have a cpp code in which I want to call a c function. Both compile well to .o files, but when the clang++ is executing for compilation, I receive the following error:
file.cpp:74:12: error: expected unqualified-id extern "C" ^
The code in the cpp file is the following:
void parseExtern(QString str) { #ifdef __cplusplus extern "C" { #endif function_in_C(str); #ifdef __cplusplus } #endif }
How can I avoid the error ? I can't compile the c file with clang++, I really need to use extern. Thanks.