我在这个网站上读到了一个答案,解释了为什么不应该总是包含所有(包含保护的)头文件 - 减慢编译时间,污染全局命名空间等。
但我想具体问一下 - 总是包括<stdlib.h>
和<stdio.h>
等标准标题被认为是好的还是坏的做法?
为什么我不应该为所有标准标题维护带有stdheaders.h
s的#include
文件,并且只是将它包含在所有地方?我认为这可能会省去我使用的函数,我忘了包含标准的标题。
具体来说,我想知道什么是C开发的标准做法。谢谢
对于每个源文件,无论是.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不包含任何头文件,因为它不需要它们。
如果您认为已经包含了不必要的文件,请将它们注释掉并编译并启用所有警告,以查看哪些声明了您需要的函数或变量。