假设我有a.c
和b.c
,它们都定义了名为struct foo
的类型,但定义不同:
#include <stdio.h>
struct foo {
int a;
};
int a_func(void) {
struct foo f;
f.a = 4;
printf("%d\n", f.a);
return f.a * 3;
}
#include <stdio.h>
struct foo { // same name, different members
char *p1;
char *p2;
};
void b_func(void) {
struct foo f;
f.p1 = "hello";
f.p2 = "world";
printf("%s %s\n", f.p1, f.p2);
}
在 C 中,这些文件可以作为符合标准的程序的一部分链接在一起吗?
(在 C++ 中,我相信这是单一定义规则所禁止的。)