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);
Share:
10,594
Laurent Crivello
Author by

Laurent Crivello

Updated on June 28, 2022

Comments

  • Laurent Crivello
    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.