C - 是否可以在具有相同主要的两个不同库之间切换?

时间:2015-04-02 01:44:11

标签: c header include libraries main

对不起我的新手问题。 我有两个使用不同结构计算相同内容的库(一个使用队列,另一个使用队列,如两个堆栈)。 队列和堆栈都是用数组实现的(它不是我自己的决定,所以我不能使用不同的结构)。 两个库的主要内容相同,没有任何区别,因此如果我使用第一个或第二个库,则main的行为方式相同。 因此,两个库具有相同的名称,但它们位于不同的文件夹中,因此我必须将main.c放在第一个或第二个文件夹中才能使用第一个或第二个库。 但这是一种非常肮脏的做法。 如何优化库的导入(可能在运行时)? 谢谢你的回答。

我希望我很清楚。 对不起,我的英语不好。

2 个答案:

答案 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中,您可以使用dlopendlsymman page将选定的库加载到进程的地址空间中,并获取给定函数名称的函数指针。使用此方法,您可以创建一个允许用户在运行时选择库的可执行文件。