可能重复:
没有标题的C程序
我一直在学习C语言.但是困扰我的一件事是,今天我做了一个C程序而忘记包含stdio.h和conio.h头文件我把文件保存为kc.c?当我编译并运行这个.c文件时,输出就像我期望的那样.
但是如何在不使用标准头文件的情况下运行C程序?
或者我不知道我失踪的概念听到了什么?
编辑:该计划
int main()
{
int i=12,j=34;
int *pa=&i,*pb=&j;
printf("the value of i and j is %d %d respectively ",*pa,*pb);
getch();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
因为我在这里使用了STDIO.H头的printf()函数,但没有包括它如何编译并成功运行?
允许编译器使事情有效,但没有义务这样做.
您应该在使用之前声明所有变量参数列表函数; 不printf()
正确地声明导致未定义的行为(并且一个有效的未定义行为是按预期工作).
如果在C99模式下编译,则应该收到有关未声明函数的警告(但Turbo C可能没有C99模式).
吹毛求疵:
[H] ow可以在不使用标准头文件的情况下运行C程序吗?
所有程序都在不使用任何标头的情况下运行.但是,大多数程序使用标准头编译来声明标准函数,更好的程序确保所有函数在使用之前声明(或在使用之前定义为静态函数).
C99需要这个,尽管许多编译器都允许编译错误的程序.但是,汇编应该产生诊断; 诊断可能会也可能不会导致编译失败.在实践中,它通常不会导致编译失败,但它可以和一些编译器(例如GCC)一起强制编译器(例如使用GCC的-Werror=missing-prototypes -Werror=old-style-definition
选项).