Does extern “C” have any effect in C?

后端 未结 3 1952
既然无缘
既然无缘 2021-02-13 10:03

I just got some C code that uses extern \"C\" to declare external functions like this:

extern \"C\" void func();

Is this valid C? I\'m getting

3条回答
  •  夕颜
    夕颜 (楼主)
    2021-02-13 10:52

    No, it's not valid C. It should only be used in C++ code to refer to functions defined in C code. The extern "C" should be surrounded in a ifdef __cplusplus/#endif block:

    // For one function
    #ifdef __cplusplus
    extern "C"
    #endif
    void func();
    
    // For more than one function
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    void func1();
    void func2();
    
    #ifdef __cplusplus
    }
    #endif
    

提交回复
热议问题