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