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

Program will not compile using modules, adding and subtracting

本文关键字:编译 加减法 模块 程序      更新时间:2023-10-16

该程序应该允许您输入两个整数,并键入an,A,S或M以相对地加,减或乘。不幸的是,它没有这样做,我想知道为什么。

#include <iostream>
using namespace std;
int main(){
char choice;
int num1, num2;
int getNums();
int operatorChoice()
int multiply(int, int);
int subtract(int, int);
int add(int, int);
void outputResult(int);
getNums();
int result;
operatorChoice();
if(choice == 'A'){
add(num1,num2);
}
if(choice == 'S'){
subtract(num1, num2);
}else{
multiply(num1,num2);
outputResult(result);
return 0;
}
}
int getNums(){
int num1,num2;
cout << "Enter an integer " << endl;
cin >> num1;
cout << "Enter an integer " << endl;
cin >> num2;
return num1, num2;
}
int operatorChoice(){
char choice;
cout << "Enter A to add, S to subtract, or M to multiply " << endl;
cin >> choice;
while(choice != 'A' && choice !='S' && choice != 'M'){
cout << "Invalid choice. Enter A to add, S to subtract, or M to 
multiply ";
cin >> choice;
}
return choice;
}
int add(){
int num1, num2;
int result;
result = num1 + num2;
return result;
}
int subtract(){
int num1, num2;
int result;
result = num1 - num2;
return result;
}
int multiply(){
int num1, num2;
int result;
result = num1 * num2;
return result;
}
void outputResult(){
int result;
cout << "The result is " << result << endl;
}

我收到以下错误消息:

./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`

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

你的函数定义在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++重新声明的不一致/趣味性对此有一些有用的信息。