美文网首页
2020-07-04 #ifdef __cplusplus ex

2020-07-04 #ifdef __cplusplus ex

作者: Wonton_skin | 来源:发表于2020-07-04 22:58 被阅读0次

    1、声明链接规范
    混编C和C++是C++提供的功能,所以只能在C++代码中想办法。C++编译器允许在声明中带 extern "C" ,表示按照C的方式链接,这样声明的代码可以与C交 互。 extern "language" 是可以嵌套的:

    extern "C" {
        void a();    // C linkage
        
        extern "C++" {
        void b();    // C++ linkage
        extern "C"
        void c();    //  C linkage
        }

        extern "C++"
        void d();    // C++ linkage
    }

    如果你希望你的C代码可以被C或C++引用,可以在C头文件中将所有声明放在 extern "C" 大括号里,但C编译器不认识这个语法,需要在C编译器使用头文件的时候,就排除掉 extern "C" ,C++编译器使用头文件的时候,就包含 extern "C" 。所有的C++编译器 都预定义了宏 __cplusplus ,所以在C的头文件可以是如下结构:

    // 这是几乎每个头文件都需要的,保证头文件只被包含一次
    #ifndefxxx_HEADER_GUARD_H_
    #definexxx_HEADER_GUARD_H_    // 如果使用C++编译器,则将头文件中所有声明包含在 extern "C" 中

    #ifdef__cplusplus
    extern"C"    {
    #endif    // __cplusplus    

    // ... body of header

    #ifdef__cplusplus
    }     // closing brace for extern "C"
    #endif    // __cplusplus

    #endif// xxx_HEADER_GUARD_H_

    引用链接https://quant67.com/post/C/mix-c-cpp.html

    相关文章

      网友评论

          本文标题:2020-07-04 #ifdef __cplusplus ex

          本文链接:https://www.haomeiwen.com/subject/pqapqktx.html