程序无法编译,即使我正在从书中复制代码

Program not compiling, even though I'm copying code from book

本文关键字:代码 复制 编译 程序      更新时间:2023-10-16

我直接从C 的书中取出了此示例(缩短了它,因此更容易查看问题是什么)。我的班级不会用G 编译。课程是:

   class stack{
       private:
           int count;
       public:
           void init(void);
   };
   inline void stack::init(void){
       count=  0;
  }


如您所见,我正在尝试在班级内部原型我的功能,然后在班级外定义它们。这本书确实做了我正在尝试的事情,但它行不通。错误在哪里?是我的计算机(我正在使用Mac)。我得到的错误是问题,但也在这里:

user-MacBook-Pro:cplusplus trevortruog$ g++ Stack2.cpp
Undefined symbols for architecture x86_64:   "_main", referenced from:
      start in crt1.10.6.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status

代码罚款。它只是没有任何有用的事情,因为它缺少main函数,因此无法从中生成任何可执行文件。

这不是编译器中的错误,而是链接器中的错误,它准确地抱怨缺乏入口点。您可以从错误消息中看到这一点:

ld:为架构找不到符号

第一件事是ld,是创建错误消息的应用程序的名称。ld是由实际编译器(内部)调用的链接器应用程序。一旦被调用,代码就已经编译了。

添加main函数以求解链接器错误。

作为另外的评论,该代码使用不良练习。这肯定暗示您正在使用的编程书不好。不幸的是,不良的教材是C 的祸根,即使正确教授,这也是一种高度复杂的语言。帮自己一个忙,放弃这本书,偏爱一本好书。