C程序运行时没有包含Header文件?

kTi*_*ari 0 c turbo-c

可能重复:
没有标题的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()函数,但没有包括它如何编译并成功运行?

Jon*_*ler 5

允许编译器使事情有效,但没有义务这样做.

您应该在使用之前声明所有变量参数列表函数; 不printf()正确地声明导致未定义的行为(并且一个有效的未定义行为是按预期工作).

如果在C99模式下编译,则应该收到有关未声明函数的警告(但Turbo C可能没有C99模式).


吹毛求疵:

[H] ow可以在不使用标准头文件的情况下运行C程序吗?

所有程序都不使用任何标头的情况下运行.但是,大多数程序使用标准头编译来声明标准函数,更好的程序确保所有函数在使用之前声明(或在使用之前定义为静态函数).

C99需要这个,尽管许多编译器都允许编译错误的程序.但是,汇编应该产生诊断; 诊断可能会也可能不会导致编译失败.在实践中,它通常不会导致编译失败,但它可以和一些编译器(例如GCC)一起强制编译器(例如使用GCC的-Werror=missing-prototypes -Werror=old-style-definition选项).