在静态库中使用宏对函数声明和定义进行符号导出的效果

时间:2014-05-30 18:34:49

标签: c macros xcode5 clang

有人知道在构建静态库时是否广泛使用c-macros来定义和声明函数会影响链接器导出这些符号的能力吗?

我一直遇到这个问题,当我切换到常规函数声明和定义(不使用宏)时,几乎总是大多数符号查找失败都消失了。

这种情况发生在使用Xcode 5并以iOS(arm + i386)为目标的mac平台上。

打开/关闭哪个构建设置无关紧要。似乎有所不同的是宏的使用和符号导出文件的使用。

我问,因为我现在面对的是一大堆代码,它使用了几个级别的宏来进行函数定义和声明,除非我绝对需要,否则我不想改变它。

代码非常复杂(但引人注目:))最初使用GNU make& amp;兄弟姐妹。因此,将其切换到基于XCode的构建是不会在公园散步。它使用标题包含的技巧。

我很欣赏这方面的一些教育:宏和&静态库的符号导出。

谢谢!

1 个答案:

答案 0 :(得分:0)

宏在编译器启动之前被扩展,并且链接器在所有目标文件完成之前不会显示。因此,要么您的宏不生成您认为他们所做的代码,要么您已经发现了第一个实现时间旅行的宏。 编辑:或者我完全错过了这一点,可以。