工程中,不同的c文件里面定义了同名函数(这些同名函数都没有使用static修饰,即都是对外提供的函数),会导致编译的时候报first defcollect2: error: ld returned 1 exit status
可能导致的后果:
1.有些编译器不允许同名函数的存在,会直接在编译链接时报错(如gcc),在开发阶段就可以发现问题;
2.有些编译器允许同名函数的存在,可能编译连接的时候仅仅只是报waring或者甚至什么都不报(如RVCT),那就有可能在运行的时候出错,函数执行的结果莫名其妙,只有在测试或者使用的时候才能发现。
(编译器对同名函数,在编译的时候只会编译一份(具体编译哪一份,编译器决定),假如使用了预期之外的,那错误就因此产生)
修改方法:将不需要对外提供的函数使用static修改或者修改同名函数