在一个C项目中定义相同的函数名称

时间:2013-08-08 12:07:15

标签: c function

我有一个主文件,其中包含两个h文件,它们都有函数foo()。 当我从主叫foo时会发生什么?将选择哪一个?

由于

编辑: 我看到了你的答案,所以你能说些什么:(它实际上有效):

///////////// FILE: q7lib.h
#include <stdio.h>
void foo ();
/////////////  END OF FILE
///////////// FILE: q7lib.c
#include "q7lib.h"
void foo () {
    printf ("q7lib: foo");
}
/////////////  END OF FILE

///////////// FILE: q7.h
#include <stdio.h>
void foo ();
/////////////  END OF FILE
///////////// FILE: q7.c
#include "q7.h"
void foo () {
    printf ("q7: foo");
}
/////////////  END OF FILE

///////////// FILE: q7main.c //////////////
#include "q7.h"
#include "q7lib.h"
int main () {
foo ();
return 0; }
///////////// END OF FILE /////////////////

2 个答案:

答案 0 :(得分:3)

您将无法调用该函数,因为链接器将不接受您的程序。链接器在遇到同一函数的多个定义时将拒绝您的程序。

答案 1 :(得分:0)

编译器会给你一个错误,告诉你这是对该函数的模糊调用。