C++笔记 - extern “C"

328 阅读1分钟

在C/C++的头文件中,经常看到 extern "C"的修饰,究竟有什么作用呢?那就要从C与C++的符号链接说起。因为C++支持函数重载,可链接文件的函数签名必定带有参数和返回值等类型信息,而C的没有。所以需要某种方法告诉编译器,这个可链接文件是C还是C++的。因此,extern "C"就诞生了。extern "C"的使用方法:

  • C++调用C函数:

    // max.h
    extern int max(int, int);
    
    // max.c
    int max(int a, int b) {...}
    
    // main.cpp
    extern "C" {
        #include "max.h"
    }
    

  • C调用C++函数:

    // max.h
    extern "C" {
        int max(int, int);
    }
    
    // max.cpp
    int max(int a, int b) {...}
    
    // main.c
    extern int max(int, int);