zero.c:多个函数声明
int sq();
one.c:
int sq(int i) { return i*i; }
two.c:
int sq(int i, int j);
main.c中:
int main() {
printf("%d\n",sq());
printf("%d\n",sq(2));
printf("%d\n",sq(2,3));
}
然后我单独编译每个文件和gcc zero.o one.o two.o main.o -o main
./main
给
1
4
4
我如何这会成功运行有点困惑。当我打电话sq()
或sq(2)
或sq(2,3)
what.c执行two.c? – Magn3s1um 2013-05-13 15:50:06
我认为你的链接器变得困惑。我不认为实际上有3种方法命名为相同的东西,即使它们有不同的参数。我认为你的目标代码将会调用其中一个函数,而不是全部3.我认为函数1正在调用,然后其余的是函数2调用。 – Magn3s1um 2013-05-13 15:52:45
会有不确定的结果,如果你这样做: http://stackoverflow.com/questions/3098380/how-to-deal-with-duplicated-function-name-within-c – Magn3s1um 2013-05-13 15:53:50