-6

我有一个主文件,其中包含两个 h 文件,它们都具有函数 foo()。当我从 main 调用 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 /////////////////
4

2 回答 2

3

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

于 2013-08-08T12:14:00.240 回答
0

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

于 2013-08-08T12:14:21.147 回答