我想要C
中的一个Header文件列表,这些文件不需要使用它们。
示例:
scanf(), printf(),.... etc. //can be use without stdio.h
getch()...etc. //can be used without conio.h
在使用这些(上面)方法时,是否有必要编写这些头文件(stdio.h,conio.h)?
答案 0 :(得分:4)
当前标准C99不推荐使用不带原型的函数,并且可能会在下一版本中删除。这是有充分理由的。这种使用很容易出错,导致难以跟踪故障。不要那样做。
答案 1 :(得分:1)
在当前的C语言标准中,函数声明(但不是原型)是强制性的,并且原型对于像printf
这样的可变函数一直是必需的。但是,您不需要包含标题;只要您具有所需的类型,您就可以自己声明/原型化这些功能。例如,使用printf
,您可以执行以下操作:
int printf(const char *, ...);
printf("%d\n", 1);
但是使用snprintf
,您至少需要stddef.h
才能获得size_t
:
#include <stddef.h>
int snprintf(char *, size_t, const char *, ...);
对于非可变函数,非原型声明有效:
int atoi();
答案 2 :(得分:0)
取决于您的编译器。
对于海湾合作委员会:http://gcc.gnu.org/viewcvs/trunk/gcc/builtins.def?view=markup
答案 3 :(得分:0)
基本上你可以使用没有标题的任何C函数。标题包含这些函数的原型,可以警告错误的类型或参数数量。
所以是的,你可以不用这些标题。
但是没有你不应该这样做。
但通常你不会写这些标题,这些是由构建环境提供的。
由于这些检查只是C中的警告,因此您应该打开这些警告并将其视为错误。否则你会遇到非常糟糕的C经验。
在gcc中,您应始终使用选项-W -Wall
运行并避免这些警告。
BTW这些不是方法,而是功能。
附录:,因为您要将所有警告视为错误,您可能会将-Werror
打开,这会将所有警告变为错误,只需执行此操作。
就我个人而言,我没有使用这个选项,但最终要清除所有警告。这使得可以忽略警告一段时间,并且通常在我提交版本控制之前进行清理。
但对于群组而言,使用-Werror
执行此操作是有意义的。在允许提交之前运行测试脚本。