6

是否有任何可能的方法来编写不包含stdio.h作为头文件的 C 程序。有人建议可以通过声明来实现extern int scanf(char* format, ...);

#include <stdio.h> //I want this same code to work without including this line

int main ()
{
  char str [80];
  scanf ("%s",str);  
  return 0;
}
4

2 回答 2

10

您可以使用以下方式声明该 scanf函数:

extern int scanf(const char *format, ...);

extern 关键字是可选的,但我喜欢将其包括在内,以提醒您该函数是在其他地方定义的。

您的示例将如下所示:

extern int scanf(const char *format, ...);

int main ()
{
  char str [80];
  scanf ("%s",str);  
  return 0;
}
于 2013-08-13T10:46:40.677 回答
1

在 C-89 中,该代码将在没有#include 的情况下编译,因为函数原型是可选的。

话虽如此,它属于“非常糟糕的事情”列表 -scanf可能是一个宏,它可能有一个或多个必需的参数,......

所以你可以做到,但这就像在没有任何灯光的晚上开车一样。即使您认为自己熟悉道路,您也可能会撞车。

于 2013-08-13T11:09:53.270 回答