【问题标题】:what is the equivalent of gcc's __attribute__((constructor)) in clang?什么是clang中gcc的 __attribute__((constructor)) 的等价物?
【发布时间】:2014-05-13 16:55:06
【问题描述】:

我刚刚完成了将相当数量的 c 源代码移植到 iOS 平台并将它们打包为通用静态框架。然后,我将框架(不是项目)添加到示例 iOS 应用程序中,以测试链接和正确的功能。就在那时,我遇到了一个令人尴尬的问题。

在尝试解决here 描述的问题时,我还遇到了一些通过大量使用宏组成的符号(我讨厌那些)。其中一些宏使用的函数属性实际上是 gcc 而不是标准 C 的扩展。

当然,我总是可以添加-std=gnu89,但即使这样,我也不确定它是否能解决静态库中未定义符号的原始问题。

不仅如此,我现在担心我将这些来源移植到 iOS 可能不是一个准确的移植,并可能导致可能与编译器的可待因和/或优化策略相关的错误/问题类型。

如果您能分享一些关于如何最好地进行该端口的经验/建议,我将不胜感激。

谢谢!

【问题讨论】:

  • 你应该问一个更具体的问题。你得到什么样的错误?我在 clang C 程序中使用 __attribute__((__constructor__)) 并且效果很好。
  • @Richard:谢谢。这就是我要找的:((_constructor_))。至于原来的问题,这里有介绍:stackoverflow.com/questions/23623223/…
  • @Richard : 你能发表你的评论作为答案让我接受吗?

标签: ios c frameworks clang ld


【解决方案1】:

从使用 clang 8.0 的手动测试来看,__attribute__((constructor))__attribute__((__constructor__)) 似乎都可以满足您的目的。

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2016-02-13
    • 2022-10-04
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    相关资源
    最近更新 更多