gpt4 book ai didi

c++ - C++ 未定义对 main 的引用时出错

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:11 24 4
gpt4 key购买 nike

我一直收到错误提示...

(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [FuelGauge] Error 1

下面是我的项目以及我的代码和 makefile。此外,如果您发现任何其他编码错误,请随时指出它们 =]

enter image description here

模拟器类

 #include <iostream>
#include <iomanip>
#include "FuelGauge.h"
#include "Odometer.h"

using namespace std;

int main(){
FuelGauge fuel(0); return 0;
}

FuelGauge 类

#include "FuelGauge.h"
#include <iostream>
#include <cstdlib>

using namespace std;
void FuelGauge::incrementGas(int gas){
if(currentFuel < maxGallon) {
currentFuel++;
}
}
int FuelGauge::getGas(){
return currentFuel;
}

FuelGauge.h

class FuelGauge {

private:
int currentFuel;
int maxGallon;

public:
void incrementGas(int);
int getGas();
};

里程表类

#include "FuelGauge.h"
#include "Odometer.h"
#include <iostream>
#include <cstdlib>
using namespace std;

private: int currentMileage;
Odometer::Odometer(){
mileage = 0;
Fuelgauge g;
}

int Odometer::getMileage(){
return mileage;
}

void Odometer::incrementMileage(){
if(mileage <= 999999){
mileage++;
}
else{
mileage = 0;
}

void Odometer::decreaseMileage(){

if(g.currentFuel > 24){
g.currentFuel--;
}
}
}

里程计.h

class Odometer{

private:
int mileage;
int gallons;
}

生成文件

FLAGS = -Wall
CC = g++
SYMBOLS = -g

all: FuelGauge Odometer CarSimulatorDemo

FuelGauge: FuelGauge.cpp FuelGauge.h
$(CC) $(FLAGS) $(SYMBOLS) -o $@ FuelGauge.cpp
Odometer: Odometer.cpp Odometer.h
$(CC) $(FLAGS) $(SYMBOLS) -o $@ Odometer.cpp
CarSimulatorDemo: CarSimulatorDemo.cpp
$(CC) $(FLAGS) $(SYMBOLS) -o $@ CarSimulatorDemocpp
clean:
rm FuelGauge Odometer CarSimulatorDemo

最佳答案

您遇到的问题可能不是因为您的 C++ 代码,而是因为您的 Makefile。您希望将每个 cpp 文件编译为目标文件而不是单独的应用程序,然后将它们链接在一起成为单个应用程序。要将 cpp 编译为 .o 文件,请使用 -c 选项。

总结一下你的 Makefile 应该如下:

FLAGS = -Wall
CC = g++
SYMBOLS = -g

all: app

app: FuelGauge.o Odometer.o CarSimulatorDemo.o
$(CC) $(FLAGS) $(SYMBOLS) *.o -o app
FuelGauge.o: FuelGauge.cpp FuelGauge.h
$(CC) $(FLAGS) $(SYMBOLS) -c -o FuelGauge.o FuelGauge.cpp
Odometer.o: Odometer.cpp Odometer.h
$(CC) $(FLAGS) $(SYMBOLS) -c -o Odometer.o Odometer.cpp
CarSimulatorDemo.o: CarSimulatorDemo.cpp
$(CC) $(FLAGS) $(SYMBOLS) -c -o CarSimulatorDemo.o CarSimulatorDemo.cpp
clean:
rm FuelGauge.o Odometer.o CarSimulatorDemo.o app

记住将 Makefile 中的空格更改为制表符!

附言。 #ifndef 应始终暗示使用 #endif 并且在头文件中始终使用它们!

关于c++ - C++ 未定义对 main 的引用时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36873225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com