报错 - undefined reference to `main‘

一、问题

  • 今天在Linux下使用 g++ 编译代码时,出了一个报错:
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/9/../../../x86_64-linux-gnu/Scrt1.o: in function `_start':
(.text+0x24): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [makefile:2: test] Error 1

我觉得莫名其妙,它竟然说 “main” 有问题,main() 函数明明好好的,也没打错之类的。

  • 部分代码如下:
#include <pthread.h>
#include <iostream>

const int threadsnum = 6;
namespace zzz
{
    int main()
    {
        std::vector<pthread_t> threads;
        std::vector<ThreadResult *> thread_rets
        ...

大家看出问题了吗?

二、解决

  • 其实是 main() 被放在了 zzz 这个命名空间里了,导致它不是公开的了。
    main() 从命名空间里拿出来后,就没有这个报错了。
    在这里插入图片描述

  • 注意: main() 不能放在命名空间里面,即使将命名空间展开也不可以。即使展开了命名空间,main() 函数也不再是单纯的 main() 了,而是 zzz::main() 了。
    在这里插入图片描述


本文到这里就结束了,如果对您有帮助,希望得到您的一个赞!🌷
如有错漏,欢迎指正!😄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值