【问题标题】:Where should standard library include be writen ? .c or .h file?标准库应该写在哪里? .c 或 .h 文件?
【发布时间】:2019-09-14 07:32:18
【问题描述】:

我有以下简单的代码:

mainc.c:

    #include <stdlib.h>
    #include "hello.h"


    int main (int argc, char *argv[])
    {
      hello ();
      return EXIT_SUCCESS;
    }

你好.c:

    #include "hello.h"

    void hello (void)
    {
      printf ("Hello world!");
    }

你好.h:

    #ifndef _HELLO_H_
    #define _HELLO_H_
    #endif

我需要在 hello 中包含 stdio.h 才能访问 printf() 函数。

我应该在哪里包含它?在 hello.c 或 hello.h 中?两种解决方案似乎都是正确的,是否有最佳实践?

【问题讨论】:

  • 您在需要的地方包含头文件。如果您需要头文件中的结构或类型或宏或函数声明,则在头文件中包含相应的头文件。至少这是我的意见
  • 另请注意,以下划线开头后跟大写字母(如_HELLO_H_)的符号是保留的。您不应该自己定义(作为宏或其他任何东西)。
  • 在当前用例中,正确的方法是在 hello.c 中包含 stdio.h ?
  • 对于这个简单的例子,是的。并且不要忘记在hello.h 头文件中声明hello 函数。

标签: c header-files


【解决方案1】:

您的应用程序中的头文件应该只包含系统头文件,这些头文件是在头文件中声明更多接口所必需的。

例如 -- 如果您的标头包含以FILE * 作为参数的函数,则它应该是#include &lt;stdio.h&gt;。如果它声明一个包含uint32_t 的结构,它应该是#include &lt;stdint.h&gt;。以此类推。

仅在实现中使用的系统标头应留给.c 文件。例如,您的标头不应仅仅因为实现调用printf()#include &lt;stdio.h&gt;

【讨论】:

    猜你喜欢
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多