这个程序应该允许你输入两个整数,并输入A,S或M来相对地加,减或乘。不幸的是,它没有这样做,我想知道为什么。
./ccAwzJxh.o: In function 'main':
main.cpp:(.text.startup+0x13): undefined reference to 'multiply(int,
int)'
main.cpp:(.text.startup+0x1a): undefined reference to
'outputResult(int)'
collect2: error: ld returned 1 exit status`
我收到以下错误消息:
{{1}}
它还给了我大多数其他函数的错误,直到我初始化变量。
答案 0 :(得分:3)
您的功能定义在int main()
之后,因此该程序并不知道您所指的是什么。在main
之前移动函数,或在main
之前声明函数,以便它知道您所指的是什么。例如:
int main(){
function(0);
}
int function(int a){
return a;
}
上面的代码在调用时不起作用,因为编译器不知道function
是什么,所以它给出了一个错误。
int function(int a);
int main(){
function(0);
}
int function(int a){
return a;
}
此代码将声明一个函数。这将导致在调用function
时编译器已经知道该函数,并且编译器将编译代码。这是最常用的(我相信)这样做的方法,因为它在函数中使用函数不会导致任何问题。
int function(int a){
return 0;
}
int main(){
function(0);
}
这只是在调用之前定义function
。这称为定义。
注意:声明不需要确切的变量。 这样:
int function(int x);
int main(){
function(0);
}
int function(int a){
return a;
}
将编译并正常工作。另外,这个:
int function();
int function(int x);
int main(){
function(0);
}
int function(int a){
return a;
}
也很好。我们编程的语言多么棒! C++ redeclaration inconsistency/interestingness有一些有用的信息。