c/c++语言开发共享如果我使用带有C工具链的extern“C ++”会发生什么?

我的问题主要是关于C ++工具链“理解”C和C ++的事实,所以如果我将一些带有extern "C"代码提供给c ++工具链,我认为它可以理解如何处理它; 但是,如果我将带有extern "C++"代码提供给C工具链呢?

预期的行为是什么?

    如果编译器也理解C ++,它可能会接受它。 如果它是一个纯C编译器,它将对象(就像它在extern "C"一样,因为该语法无效C – 这就是为什么它通常用#ifdef __cplusplus或其他一些包含)

    应该不编译,它是无效的C语法。

    在头文件中使C声明在C和C ++编译器中工作的标准方法是依赖于仅在C ++编译器中定义的预处理器符号。 像这样:

     #ifdef __cplusplus extern "C" { #endif // C declarations here // ... #ifdef __cplusplus } #endif 

    每个C ++编译器都定义了__cplusplus。

    extern "C++"不是有效的C代码,因此符合标准的C编译器必须发出诊断信息。 没有要求它不编译代码。 在发布诊断之后,编译器可以自由地执行其实现者认为合适的任何内容。

    如果您使用此选项编写了其他编译​​器,则可以执行此操作。

    正如@Mats所回答的,我们有另一个实现此目的的程序是#ifdef __cplusplus 。 而且你正在尝试的只是错误。

      以上就是c/c++开发分享如果我使用带有C工具链的extern“C ++”会发生什么?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545750.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐