我有一个主文件,其中包含两个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 /////////////////
答案 0 :(得分:3)
您将无法调用该函数,因为链接器将不接受您的程序。链接器在遇到同一函数的多个定义时将拒绝您的程序。
答案 1 :(得分:0)
编译器会给你一个错误,告诉你这是对该函数的模糊调用。