功能应该有一个原型

时间:2016-08-09 16:02:05

标签: c

我是C编程的初学者。我正在使用turbo C ++ 4.0,我也不知道它是否是开源的。但是我已经从互联网上下载了这个。我写了非常简单的程序如下:

main()
{
printf("I see, I remember")
}

编译器显示以下错误:
函数printf应该有一个原型
以下警告: 函数应返回一个值。

我指的是E. Balaguruswamy编写的ANSI C编程。在本书中,这是第一个示例程序。我只是无法运行第一个程序。所以,请帮忙。


3 个答案:

答案 0 :(得分:4)

首先,Turbo C ++是一个非常旧的已停产的开发环境,它不支持最新的C编程语言标准。您最好使用MinGWCygwin

其次,粘贴在这里的代码缺少一些东西;要么你没有正确地复制它,要么你正在使用的书写得不好。以下是使用现代C代码应该的代码:

#include <stdio.h>

int main( void )
{
  printf( "I see, I remember\n" );
}

从C99语言标准开始,不再允许隐式函数声明;如果未指定类型,编译器将不再假设函数返回int

此外,您不应将main的参数列表留空;在这种情况下,我们使用main关键字 1 指定void不带参数。

printf写入标准输出,标准输出通常是行缓冲,这意味着除非填充缓冲区或发送换行符,否则输出不会出现在控制台上({ {1}})。

同样在C99中,您不需要'\n'的显式返回,即使它被键入以返回整数值;默认情况下,程序完成执行后,它将返回0到运行时环境。

<小时/>

  1. main的独特之处在于它可以不带参数(main)或两个参数(int main( void ))来处理命令行参数,而实现可以提供其他版本。

答案 1 :(得分:3)

由于你没有正确的#include <stdio.h>你的编译器认为printf是一个应该在某处声明的函数,因此:

  

函数printf应该有一个原型

另外,您忘记了行尾的;

答案 2 :(得分:1)

您在这里缺少分号(printf)。在C中,每个语句都以分号结尾。您还要在要打印的字符串末尾缺少换行符(\ n)。您的printf("I see, I remember\n"); 语句应如下所示:

int main()

关于警告。警告不是任何错误,但用于表明您的代码可能显示未定义的行为。

使用int作为功能名称。这里,int是函数的返回类型。 main()之前的return 0;表示该函数返回一个整数。

因此,您可能希望在程序结束时添加main,因为int函数需要return 0;返回。 #include<stdio.h>语句告诉您的程序已成功完成执行。

此外,您还缺少printf()函数定义所来自的头文件printf()。如果您不包含头文件,编译器会认为#include<stdio.h> int main() { printf("I see, I remember\n"); return 0; } 是一个应该在某处声明的函数。

您的代码应如下所示:

"coverage": "node_modules/.bin/babel-node node_modules/.bin/isparta cover --include-all-sources --report html node_modules/.bin/_mocha -- --reporter $npm_package_config_bdd_reporter",

我希望这可以解除你的疑虑。