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

时间:2014-01-21 19:57:57

标签: c++ macos

我直接从一本关于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

1 个答案:

答案 0 :(得分:1)

代码编译得很好。它没有做任何有用的事情,因为它缺少main函数,因此无法从中生成任何可执行文件。

这不是编译器中的错误,而是链接器中的错误,它正好抱怨缺少入口点。您可以从错误消息中看到:

  

ld:找不到架构的符号

首先,ld是创建错误消息的应用程序的名称。 ldlinker application,它由实际编译器(内部)调用。一旦调用它,代码就已经编译好了。

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

作为补充评论,代码使用了不好的做法。这肯定暗示你正在使用的编程书很糟糕。遗憾的是,糟糕的教材是C ++的祸根,即使正确教授,也是一种高度复杂的语言。帮自己一个忙,放弃这本书,转而使用a good one