IAR lmibrary编译:删除/隐藏内部符号和API

时间:2015-04-16 14:49:41

标签: compilation workbench iar

我们正在使用IAR Embedded工作台来创建库。

当我们使用这些库编译项目时,我们面临一个问题: 如果应用程序层实现了与库中定义的函数同名的函数,则在应用程序编译期间会通知“重复定义”错误。

为了避免这种错误类型,我只想知道是否有办法隐藏内部API以及编译库的内部符号(全局变量...)?

提前谢谢

1 个答案:

答案 0 :(得分:0)

对于仅在单个编译单元中使用的内部函数和变量,您可以使用static关键字为它们提供内部链接:

/*library.c*/
static int internalLinkageVar;
static void internalLinkageFunc(void);

这当然不适用于库中多个.c文件必须可访问的符号。对于那些,最好在符号名称上使用合理的长前缀:

int MyLibrary_Private_Var2;
void MyLibrary_Private_Func(void);