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

标签 c++ macos

我直接从一本关于 C++ 的书中获取了这个示例(缩短了它以便更容易看出问题所在)。 我的类(class)不会用 g++ 编译。该类是:

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

   inline void stack::init(void){
       count=  0;
  }

~
如您所见,我正在尝试在类内制作我的函数原型(prototype),然后在类外定义它们。这本书确实做了我正在尝试的事情,但它不起作用。错误在哪里?是我的电脑吗(我用的是 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: symbol(s) not found for architecture

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

添加一个main函数来解决链接器错误。

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

关于c++ - 程序没有编译,即使我正在从书中复制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21267813/

相关文章:

bash - bash中ffmpeg的文件名中的空格

macos - 如何使用 Mac 终端 SSH 到本地 Ubuntu 服务器?

macos - 如何在 Mac 上运行 LMbench

c++ - 如何初始化 typedef 结构指针

c++ - 与视觉检漏仪泄漏对应的代码

c++ - 如何将 Qt 资源嵌入到 .dll 文件中?

objective-c - AudioFileOpen无法以读/写权限打开

android - 在 OS X v10.6 Snow Leopard 上安装 Eclipse 和设置 Android ADT

c++ extern constant int 用于数组大小

C++放置 'const'麻烦。