明明已经加了头文件
#include <sys/syscall.h> #define gettid() syscall(__NR_gettid)
但是依旧不能使用 syscall() 函数,
检查源码后:
sys/syscall.h 内部表示,他封装了![[Pasted image 20220818151746.png]]
打开对应的 syscall.h 文件内部依旧没有 syscall()函数的声明。
![[Pasted image 20220818151900.png]]
如上所言,内部是一些宏定义。
至此问题明确为:缺少对应的syscall()的声明。
这里我的编译环境是使用VsCode 进行的远端编译,远端服务器是Linux系统。
在Linux系统下搜索 syscall() 函数:
grep -R syscall /usr/include
找到如下:
/usr/include/unistd.h:extern long int syscall (long int __sysno, ...) __THROW;
所以,添加指定头文件 内容:
#include <unistd.h>
再次编译成功完成。
再次补充:
通过对源码的学习,在头文件中找到如下内容,
其实这里就已经说明了,设计到的文件信息,所以之后的话,可以依照这个经验,来看看他所提到的文件中有无对应内容,这样可以减少查找的范围。
提高效率