相关疑难解决方法(0)

C89,C90或C99中的所有功能都需要原型吗?

为了真正符合标准,C中的所有函数(main除外)都必须有原型,即使它们只是在同一个翻译单元中定义之后才使用它们吗?

c c99 c89

46
推荐指数
3
解决办法
9975
查看次数

如果 main() 之后定义的函数中没有 return,为什么 C 中不需要函数原型?

double cubenum();正如预期的那样,如果原型未按 C 中的要求声明,则以下代码会生成错误。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    printf("Answer is: %f", cubenum(3.0));
    return 0;
}

double cubenum(double number){
    double result = number * number * number;
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然而,如果将上面的cubenum定义替换为以下定义而不返回,那么当未声明cubenum原型时,它不会生成任何错误:

void cubenum(double number){
    double result = number * number * number;
    printf("Answer is: %f", result);
}
Run Code Online (Sandbox Code Playgroud)

当原型声明为 voidcubumum(); 时 使用上面的cubenum定义而不返回它会生成以下错误:

||=== Build: Debug in xxx(compiler: GNU GCC Compiler) ===|
C:\xxx\main.c||In function 'main':|
C:\xxx\main.c|10|error: invalid use of void expression|
||=== Build failed: 1 error(s), 0 warning(s) (0 …
Run Code Online (Sandbox Code Playgroud)

c gcc

0
推荐指数
1
解决办法
1289
查看次数

标签 统计

c ×2

c89 ×1

c99 ×1

gcc ×1