且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

当为extern&QUOT使用; C"在C ++?

更新时间:2023-02-15 20:18:21

为externC使得名未进行重整。

extern "C" makes names not mangled.

它适用于:


  1. 我们需要在C中使用一些C ++库

  1. We need to use some C library in C++

extern "C" int foo(int);


  • 我们需要输出一些C ++ code到C

  • We need export some C++ code to C

    extern "C" int foo(int) { something; }
    


  • 我们需要共享库来解决符号的能力 - 所以我们需要摆脱重整

  • We need an ability to resolve symbol in shared library -- so we need to get rid mangling

    extern "C" int foo(int) { something; }
    ///
    typedef int (*foo_type)(int);
    foo_type f = (foo_type)dlsym(handle,"foo")