程序未编译,即使I';我从书上复制代码 我直接从一本C++的书中获取了这个例子(缩短了它,这样就更容易看到问题所在)。 我的类不会用g++编译。课程为: class stack{ private: int count; public: void init(void); }; inline void stack::init(void){ count= 0; }
~程序未编译,即使I';我从书上复制代码 我直接从一本C++的书中获取了这个例子(缩短了它,这样就更容易看到问题所在)。 我的类不会用g++编译。课程为: class stack{ private: int count; public: void init(void); }; inline void stack::init(void){ count= 0; },c++,macos,C++,Macos,~ 正如您所看到的,我试图在类内对我的函数进行原型化,然后在类外定义它们。这本书正是我想做的,但它不起作用。错在哪里?是我的电脑吗(我在用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:
正如您所看到的,我试图在类内对我的函数进行原型化,然后在类外定义它们。这本书正是我想做的,但它不起作用。错在哪里?是我的电脑吗(我在用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++的祸根,即使是正确的教学,它也是一种非常复杂的语言。请自己帮个忙,把书扔在一边。你忘记了定义主函数。你错过了