为什么我的以下代码不会引发重复符号冲突?
我提到了名称修饰,但这似乎仅在参数存在差异时。但是,这里的参数没有区别。但是,它仍然不会引发冲突。为什么?
好.c
#include <stdio.h>
void printGood() {
printf("I am good");
}
完美的.c
#include <stdio.h>
void printGood() {
printf("I am perfect");
}
交流电
extern void printGood();
void bringGood() {
printGood();
}
公元前
extern void printGood();
void bringPerfect() {
printGood();
}
编排器.c
#include <stdio.h>
void bringGood();
void bringPerfect();
int main() {
printf("bringing good");
bringGood();
printf("bringing perfect");
bringPerfect();
return 1;
}
编译行:
gcc -g -c good.c
gcc -g -c perfect.c
gcc -g -c A.c
gcc -g -c B.c
gcc -g -c orchestrator.c
ar rcs libA.a perfect.o A.o
ar rcs libB.a good.o B.o
gcc -o orchestrator orchestrator.o -L. -lA -lB