对不起我的新手问题。 我有两个使用不同结构计算相同内容的库(一个使用队列,另一个使用队列,如两个堆栈)。 队列和堆栈都是用数组实现的(它不是我自己的决定,所以我不能使用不同的结构)。 两个库的主要内容相同,没有任何区别,因此如果我使用第一个或第二个库,则main的行为方式相同。 因此,两个库具有相同的名称,但它们位于不同的文件夹中,因此我必须将main.c放在第一个或第二个文件夹中才能使用第一个或第二个库。 但这是一种非常肮脏的做法。 如何优化库的导入(可能在运行时)? 谢谢你的回答。
我希望我很清楚。 对不起,我的英语不好。
答案 0 :(得分:0)
我想你想要使用两个文件中的两个函数。也许您需要将代码与* .h和* .c分开。
例如:
交流转换器
#include <stdio.h>
void A() {
printf("this is A!");
}
A.H
void A();
b.c
#include <stdio.h>
void B() {
printf("this is B!");
}
b.h
void B();
的main.c
#include "a.h"
#include "b.h"
int main(void) {
A();
B();
return 0;
}
答案 1 :(得分:0)
我从您的描述中假设,两个库都公开具有相同签名(函数名称,类型和参数)的函数。
大多数操作系统都提供了一种在运行时选择和加载动态库的机制。例如,在Linux中,您可以使用dlopen
和dlsym
(man page将选定的库加载到进程的地址空间中,并获取给定函数名称的函数指针。使用此方法,您可以创建一个允许用户在运行时选择库的可执行文件。