多文件时inline函数的定义只能放在头文件中

多文件时inline函数的定义只能放在头文件中

有两个文件year.cpp test_year.cpp ,头文件year.h 。year.h里面函数声明是不带inline的,year.cpp里面函数定义都带了inline,test_year.cpp里面调用了很多year.cpp的函数。编译的时候一条一条报错,都是undefined reference to xxx。

在老师的帮助下发现了问题。结论是多文件时inline函数定义只能放在头文件中,如果定义放在源文件中,无论是在头文件还是在源文件,有一个加了inline,那么其他源文件就用不了该函数。

发现过程如下:

在终端分条输入如下指令

g++ year.cpp -c -o year.o

nm year.o

第一条生成可执行文件year.o

第二条查找该文件里面的名字 发现定义的inline函数的名字都不在可执行文件里。而如果要链接,这些名字是必须的。

所以问题出在inline上,并且尝试了一下,year.cpp和year.h里面只要有一个加了inline,可执行文件里就不会产生对应名字。

此外还可以输入指令

make | findstr 函数名

来找对应的函数名字存不存在。

mark一下。老师真的强,shell小白的我只能佩服。

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值