在C中:
下面是C中的示例,
#include <stdio.h> //没有提到参数列表 void func(); int main(){ //它在C中编译,但这不是 //我们应该做的事情 func(10); return 0; } void func(int x) { printf("value: %d\n", x); }
输出:
value: 10
上面的一个成功编译。但是下面的代码不能在C中编译。
#include <stdio.h> //没有提到参数列表 void func(); int main(){ //它不会编译 func('a'); return 0; } void func(char x) { printf("value: %c\n", x); }
输出:
main.c:14:6: error: conflicting types for ‘func’ void func(char x) ^~~~ main.c:15:1: note: an argument type that has a default promotion can’t match an empty parameter name list declaration { ^ main.c:4:6: note: previous declaration of ‘func’ was here void func(); ^~~~
在C ++中:
下面是C ++中的示例,
#include <bits/stdc++.h> using namespace std; //没有提到参数列表 void func(); int main(){ //它不会编译 func(10); return 0; } void func(int x) { cout << "value: \n" << x << endl; }
输出:
main.cpp: In function ‘int main()’: main.cpp:10:12: error: too many arguments to function ‘void func()’ func(10); ^ main.cpp:5:6: note: declared here void func(); ^~~~