编译看到报错
In file included from A.h:22:0,
from B.h:9,
from C.c:5:
../common/arch.h:39:26: 错误:与‘int64_t’类型冲突
typedef signed long long int64_t;
————————————————分割线——————————————————
^
In file included from /usr/include/stdlib.h:314:0,
from ../common/arch.h:22,
from A.h:22,
from B.h:9,
from C.c:5:
/usr/include/sys/types.h:197:1: 附注:‘int64_t’的上一个声明在此
__intN_t (64, __DI__);
解释:
分割线上面是类似于一个堆栈,假设叫堆栈A,分割线下面也是一个堆栈,假设叫堆栈B,堆栈A的栈顶也就是arch.h跟堆栈B的栈顶types.h冲突,都定义了int64_t。
解决方案:
我们一般不会修改系统函数,我们只会修改自己写的文件,我们自己写的文件就是arch.h,我注释了自己在arch.h里写的int64_t,就解决了。
有时候可以加入一些宏定义去判断,比如说我判断引入了系统的types.h,就不定义int64_t。