程序不会使用模块编译,加减法
Program will not compile using modules, adding and subtracting
该程序应该允许您输入两个整数,并键入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++重新声明的不一致/趣味性对此有一些有用的信息。