zoukankan      html  css  js  c++  java
  • __cplusplus的用法(转)

    经常在/usr/include目录下看到这种字句:

     

    #ifdef __cplusplus
    extern "C" {
    #endif
    ...
    #ifdef __cplusplus
    }
    #endif

    不太明白是怎么用的。今天阅读autobook,在第53页看到了作者的解释:C/C++编译器对函数和变量名的命名方法不一样(例如C++中重载的函数有多个名字,而C的函数只有一个名字),这样当C编译器去引用C++编译器编译出来的符号时,会找不到链接。因此,当一个头文件可能既被C程序引用,又被C++程序引用时,需要使用如上代码进行区分。

    上面的写法太复杂了,况且两个大括号{和}分离,会造成有些编辑器的缩进错误。更好的手法是将如下代码定义在一个公共头文件中,然后所有其它头文件去引用它:

    #ifdef __cplusplus
    #  define BEGIN_C_DECLS         extern "C" {
    #  define END_C_DECLS           }
    #else
    #  define BEGIN_C_DECLS
    #  define END_C_DECLS
    #endif

    有关__cplusplus和extern "C"的更多用法,可以参考下文:

    《C++中extern “C”含义深层探索》
    http://hi.baidu.com/17cpp/blog/item/a46bfd13a4816e025aaf53f6.html

  • 相关阅读:
    spring profile 多环境配置管理
    搭建docker私服仓库
    ubuntu安装mysql添加密码
    yum源安装docker
    keep + haproxy 运行原理
    gitlab汉化
    什么是DevOps?
    Kafka高并发原理概述
    k8s + flannel 内网不能互通问题排查
    Flannel跨主机互联概述及容器网络拓扑图
  • 原文地址:https://www.cnblogs.com/the-tops/p/6905802.html
Copyright © 2011-2022 走看看