我正在进行一项实际任务,要求我们使用外部函数来确定输入的整数是否为素数。我已经创建了头文件,外部函数文件和主文件,但是当我使用
进行编译时g ++ -o main main.cpp \ n extFunc.cpp
但我收到错误:
/tmp/cca073oR.o:在功能' main':
main.cpp :(。text + 0x42):未定义引用' isPrime(int)'
collect2:错误:ld返回1退出状态
以下是我的cpp和header类:
1)extFunc.h
bool isPrime(int num);
2)extFunc.cpp
# include "extFunc.h"
bool isPrime(int num) {
int i;
bool numPrime;
//Determine if number is prime
if (num <= 0) {
numPrime = false;
}
if (num = 1) {
numPrime = false;
}
if (num = 2) {
numPrime = true;
}
if (num = 3) {
numPrime = true;
}
else {
numPrime = true;
for(i = 2; i < num; i++) {
if ((num%i) == 0){
numPrime = false;
break;
}
}
}
//Return values
if (numPrime == true) {
return true;
} else {
return false;
}
}
3)main.cpp
#include <iostream>
#include "extFunc.h"
using namespace std;
int main() {
//Variables
int uNum;
bool prime;
cout << "Enter a number: ";
cin >> uNum;
prime = isPrime(uNum);
if (prime = true) {
cout << uNum << " is prime" << endl;
}
else {
cout << uNum << " is not prime" << endl;
}
return 0;
}
我尝试了一些我能在网站上找到的其他建议,包括在头文件中使用#ifndef,但它没有为我修复任何内容。我无法确定可能出现的问题,因为头文件和函数文件中的函数是相同的,并且在主文件中正确调用(从我可以看到)。
答案 0 :(得分:0)
感谢所有回复。我设法解决了这个问题。大学今天早上发布了一份帮助我们完成作业的指南,并且我修改了修复问题的makefile。
这就是我对makefile的看法
main: main.o extFunc.o
g++ -o main main.o extFunc.o
main.o: main.cpp extFunc.h
g++ -c main.cpp
extFunc.o: extFunc.h extFunc.cpp
g++ -c extFunc.cpp
run:
./main
clean:
rm *. main
答案 1 :(得分:0)
我认为您在“ =”和“ ==”之间混淆 例如
if (num = 1) {
[...]
}
应该是:
if (num == 1) {
[...]
}
也许为了避免这种错误,最好使用“ const”关键字。
发生错误: 在extFunc.cpp的第10、13和16行上 和main.cpp中的第16行