C++中对于struct的思考和学习

我有两个个函数名为test1()什么都不用调用,test2()需要调用一个cmp函数,cmp需要两个个结构体 形参,关系大致如下
void test2();
bool cmp(S a1,S a2)
struct S{}
main()
第一次尝试,四个全写在一起,理所当然的成功了
第二次尝试,main()函数单独抽出来,其余三个函数在同一个cpp文件。失败,not in this scope
第三次尝试,在第二次尝试的基础上,在main文件中加入
extern test1();
extern test2();
test1()成功运行,但是test2()因为有调用的缘故失败了,至此test1()告一段落。
第四次尝试,cmp,结构体和test2()全部加上extern放入main文件中,问题集中在struct中。失败。这里强调一下,结构体struct本身就被视作extern类型的,它也不可以加上这个关键字。
第五次尝试,设置一个.h头文件,把cmp,结构体和test2()直接扔进去,main文件可以调用,成功,但我隐约觉得这样不好,头文件中放定义不是一件好事。
详情可以阅读这位作者的博客,很详细
https://blog.csdn.net/qq_41209741/article/details/84108962
第六次尝试,最终成功,cmp,结构体和test2()扔进头文件a.h,函数全部extern,但是结构体不可以有申明的变量!在b.cpp中具体申明,然后main文件调用即可。
第七次尝试,听从了一位大佬的建议,把extern函数的申明放到main.cpp也可以运行。我推测:如果是第六次尝试,那么就是连接头文件,之后再连接b.cpp。如果是第七次尝试,就是直接去找b.cpp文件。毕竟我写的是小项目,没有感受到区别,我之后再找书确认一下。

你可能感兴趣的:(随笔流水账)