始终包含标准标题是一种好习惯吗?

问题描述 投票:2回答:1

我在这个网站上读到了一个答案,解释了为什么不应该总是包含所有(包含保护的)头文件 - 减慢编译时间,污染全局命名空间等。

但我想具体问一下 - 总是包括<stdlib.h><stdio.h>等标准标题被认为是好的还是坏的做法?

为什么我不应该为所有标准标题维护带有stdheaders.hs的#include文件,并且只是将它包含在所有地方?我认为这可能会省去我使用的函数,我忘了包含标准的标题。

具体来说,我想知道什么是C开发的标准做法。谢谢

c header conventions
1个回答
2
投票

对于每个源文件,无论是.c文件还是.h文件,最佳做法是仅包含所需的标头。这样做不仅可以缩短编译时间,还可以记录文件的功能。

这里有一些例子:

在f1.c:

#include <stdio.h>

void print_int(int i)
{
    printf("i=%d\n", i);
}

f2.c:

#include <stdlib.h>

void *safe_malloc(size_t size)
{
    void *p = malloc(size); 
    if (!p) exit(1);
    return p;
}

f3.c:

int sum(int a, int b)
{
    return a+b;
}

文件f1.c仅包含stdio.h,因为它执行I / O但没有其他功能。类似地,f2.c只包含stdlib.h,因为它使用那里定义的函数但不使用任何I / O函数,并且f3.c不包含任何头文件,因为它不需要它们。

如果您认为已经包含了不必要的文件,请将它们注释掉并编译并启用所有警告,以查看哪些声明了您需要的函数或变量。

© www.soinside.com 2019 - 2024. All rights reserved.