程序不会使用模块,加法和减法进行编译

时间:2018-03-02 00:30:11

标签: c++

这个程序应该允许你输入两个整数,并输入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}}

它还给了我大多数其他函数的错误,直到我初始化变量。

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有一些有用的信息。