尝试编译二叉树程序时出错
error when trying to compile binary tree program
所以在这个项目中,我必须开发一个二叉表达式树,并使用该树将后缀表达式转换为中缀表达式。在大多数情况下,一切看起来都不错(除了我尚未完成的一两个功能)。但是我在尝试编译它时遇到错误。唯一的问题是,它并没有真正告诉我问题是什么。这是我尝试编译它时遇到的问题:
g++ -o bet.x bet.cpp/usr/lib/gcc/x86_64-redhat-linux6E/4.4.7/../../../../lib64/crt1.o:在函数"_start"中:(.text+0x20):对"main"的未定义引用
收集2:LD 返回 1 个退出状态
制造: *** [bet.x] 错误 1
我不知道这意味着什么。但以防万一这是我的 3 个文件。从我的制作文件开始:
bet.x: bet.cpp
g++ -o bet.x bet.cpp
clean:
rm -f *.o *.x core.*
这是我的 bet.h(头文件),它保存我的接口:
#include <string>
using namespace std;
struct BinaryNode
{
string element;
BinaryNode* leftNode;
BinaryNode* rightNode;
};
class BET
{
public:
BET();
BET(const string postfix);
BET(const BET&);
~BET();
bool buildFromPostfix(const string postfix);
const BET& operator= (const BET&);
void printInfixExpression();
void printPostfixExpression();
size_t size();
size_t leaf_nodes();
bool empty();
private:
void printInfixExpression(BinaryNode *n);
void makeEmpty(BinaryNode* &t);
BinaryNode* clone(BinaryNode* t) const;
BinaryNode* headNode;
void printPostfixExpression(BinaryNode *n);
size_t size(BinaryNode *t);
size_t leaf_nodes(BinaryNode *t);
};
向您展示我的整个赌注.cpp包含我所有实现的文件可能太多了。但这里有一些。如果需要更多,请发表评论:
BET::BET()
{
headNode = NULL;
}
BET::BET(const string postfix)
{
headNode = NULL;
buildFromPostfix(postfix);
}
BET::BET(const BET& t)
{
headNode = clone(t.headNode);
}
BET::~BET()
{
makeEmpty(headNode);
}
//2 functions i made myself for high/low precedence
bool isHighPrec(const string& op)
{
return op == "*" || op == "/";
}
bool isLowPrec(const string& op)
{
return op == "+" || op == "-";
}
//returns false for errors, returns true otherwise
bool BET::buildFromPostfix(const string postfix){
stack<BinaryNode*> opTree;
istringstream istr(postfix);
string op;
makeEmpty(headNode);
while(istr >> op)
{
if(isHighPrec(op) || isLowPrec(op))
{
if(opTree.size() < 2)
{
cout << "Error -- invalid postfix expression!n";
while(opTree.size())
{
makeEmpty(opTree.top());
opTree.pop();
}
return false;
}
else
{
BinaryNode* bn = new BinaryNode();
bn->element = op;
bn->rightNode = opTree.top();
opTree.pop();
bn->leftNode = opTree.top();
opTree.pop();
opTree.push(bn);
}
}
else
{
BinaryNode* bn = new BinaryNode();
bn->element = op;
bn->rightNode = NULL;
bn->leftNode = NULL;
opTree.push(bn);
}
}
if(opTree.size() != 1)
{
cout << "Error -- invalid postfix expression!n";
while(opTree.size())
{
makeEmpty(opTree.top());
opTree.pop();
}
return false;
}
else
{
headNode = opTree.top();
opTree.pop();
}
return true;
}
这意味着您正在尝试编译一个未定义main
函数的可执行程序。程序不知道首先运行哪个函数。
要解决此问题,您需要在源代码的全局上下文中的某个位置添加int main(){ //body return 0; }
。
以下命令:
g++ -o bet.x bet.cpp
说从单个文件制作一个名为bet.x的可执行文件:bet.cpp
但是,要制作可执行文件,您需要一个缺少的main()函数。
如果你只是想确保语法正常,你可以通过-c
传递给g++来构建一个对象文件
另一种选择是添加一个main()
函数,甚至可以编写一些测试来检查代码是否正常工作。
相关文章:
- 重载操作程序时出错>>用于类中的字符串 memebr
- 分段错误当我试图运行程序时出错
- 使用 Visual Studio 2019 构建 Hello World wxwidgets 应用程序时出错
- 在另一台 PC 上执行程序时加载 SDL2 共享库时出错
- 在发布模式下启动使用库的静态链接编译的应用程序时出错
- 从 ParaView 构建自定义 Qt 应用程序示例时出错
- 程序_free_dbg(块,_UNKNOWN_block)出错
- 在调试模式下,所有程序都运行良好,但在发布模式下,我在cudaMalloc操作中出错
- 在OpenGL中使用程序集代码渲染视频时出错
- 程序的 substr() 函数中的输出出错
- 编译特征程序时出错:错误:'seq'不是'Eigen'的成员
- 将 Dr. Memory 与 Visual Studio 项目配合使用时出错:缺少应用程序所需的库
- 在返回另一个函数的函数中执行程序期间出错
- 在 MacOSX 上编译 OpenGL 程序时出错('ld:找不到 -lopengl32 的库)
- 在比较特定输入中的程序的数组中出错
- 编译 libraw 程序时出错
- 尝试使用共享库部署QT应用程序时出错
- 编译 CPP 应用程序时出错。 "error: 'posix_memalign' was not declared in this scope"
- 第二次构建C++程序时出错
- 使用CUDA编译OpenCV示例程序时出错