c语言头文件中出现的重定义问题

img

img


只要把makemoney.h中的Wallet删掉,就不会出现重定义报错了。有两个疑问1.为什么makemoney.h中没有Wallet的typedef,怎么它还是能用(标蓝了),typedef的作用域是咋样的2.就算假装在makemoney.h定义了或者include wallet.h了,我的条件编译也没能防护住吗?