【问题标题】:Including C headers inside a C++ program在 C++ 程序中包含 C 头文件
【发布时间】:2011-03-20 17:45:19
【问题描述】:

我有一个 C++ 程序 (.cpp),我希望在其中使用 C 头文件中的一些函数,例如 stdio.h、conio.h、stdlib.h、graphics.h、设备。 h等

我可以在我的 cpp 文件中包含 stdio.h 库:#include <cstdio>。 如何包含其他库文件?

如何添加 graphics.h 库?

我使用的是 Microsoft Visual Studio 6.0 企业版和 Turbo C++ 3.0。

【问题讨论】:

  • 这可能看起来像吹毛求疵,或者它是一个小的语法错误,但这个错误通常表明对 C 链接的基本误解。您不能包含库文件。您可以包含头文件。标题不是库。库不是标题。您可以包含 graphics.h 标头,然后您必须链接到标头中指定 API 的库。

标签: c++ c header header-files


【解决方案1】:

对于 C 标准 C 头文件(stdio、stdlib、assert、...)的列表,在前面加上 c 并删除 .h。 例如 stdio.h 变成 cstdio。

对于其他标题,请使用

extern "C"
{
  #include "other_header.h"
}

【讨论】:

    【解决方案2】:

    如果你把它放在你的标题中:

    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    // your normal definitions here
    
    #ifdef __cplusplus
    }
    #endif
    

    那么它将适用于 C 和 C++ 没有任何问题...

    希望这会有所帮助...:)

    【讨论】:

      【解决方案3】:

      我不确定您究竟需要什么,但如果您想在 C++ 程序中使用老式 C 函数,您可以通过删除 .h 并添加“c”前缀来轻松包含它们。

      例如,如果你想包含math.h 使用

      #include <cmath>
      

      【讨论】:

        【解决方案4】:

        只需将它们包含在 extern "C" 块中,它们应该可以按预期工作。

        【讨论】:

          【解决方案5】:

          您可以使用他们的原始名称#include 他们。 #include &lt;stdio.h&gt; 在 C++ 中工作得很好。

          【讨论】:

          • C 标准头文件需要在标准 C++ 中工作,尽管您可能会在全局命名空间中添加超出您喜欢的内容。非标准头文件,如 conio.h 或 graphics.h,可能设置不正确,可能需要包裹在 extern "C" { ... } 中。检查您的实施文档。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-11
          相关资源
          最近更新 更多