coleyao 发表于 2011-9-9 08:44:07

同名函数多处有定义时实际调用哪一处优先,请高手解答

IAR中,如果"main.c"中定义include "Ax.h",同时"Ax.h"所在目录下含有文件"Ax.c","main.c"和"Ax.c"有一个同名函数funcx()且该函数在 "Ax.h"中有说明,那么实际"main.c"中调用函数funcx()时调用的是哪一个文件中的函数呢?知道的高手请告知答案及理由,谢谢!

xingkong911 发表于 2011-9-9 08:46:28

同时定义两个一样的函数?

yajira 发表于 2011-9-9 08:48:00

理论上会有重定义的错误

当然实际上也是有这个错误

zjr0411 发表于 2011-9-9 08:49:54

那你看这两个函数的参数个数一致吗,如果不一致是c++里面的函数的重载。

albert_w 发表于 2011-9-9 08:50:53

你能编译过去,真是个奇迹,参见楼上

coleyao 发表于 2011-9-9 09:35:00

试验结果出来了,编译没问题,前提是不把"Ax.c"文件加入到当前项目中,否则在Link时会出错,当然没加入当前项目的状况下实际调用也只会是"main.c"中的函数。

coleyao 发表于 2011-9-9 09:47:25

我是看我单位里的前辈的代码有这样的问题比较困惑,印象中有些编译器会默认在项目中加入"Ax.C"(记不得是哪一种,年纪大了,记性不好,呵呵),所以特地在此求证一下,看别人的代码就是麻烦啊:整洁点的还好,但也不能保证没陷阱,至于那种除了网上摘来,其余一个main函数搞定的高手的代码,看着就一个头似两个大!

ptz19861212 发表于 2011-9-9 10:31:06

回复【6楼】coleyao
-----------------------------------------------------------------------

单位的前辈也是单文件,除了网上摘来,其余一个main函数加中断搞定。一旦按键有个什么问题,就直接卡在那边动不了了 --!

tuzihog520 发表于 2011-9-10 18:05:02

应该是重复定义了
页: [1]
查看完整版本: 同名函数多处有定义时实际调用哪一处优先,请高手解答