【问题标题】:How to use macro for undefined reference如何将宏用于未定义的引用
【发布时间】:2019-08-26 10:14:09
【问题描述】:

我有通过 GCC 使用 .a 文件静态编译的 C 代码。

在 c 代码中,我使用在 .a 文件中实现的函数。

如果此函数在.a 文件中定义,例如,如果函数a 未定义我想使用函数b

# IF_A_UNDEFINED
b()
#ELSE
a()
#ENDIF

这样可以吗?

【问题讨论】:

  • 没有。完全不可能像你描述的那样。
  • @AnttiHaapala 那么在静态编译时在 C 代码中执行此操作的更好方法是什么?在 gcc 编译行中?
  • 可能是weak symbols?

标签: c gcc macros linker undefined


【解决方案1】:

3 个答案:不,不,也许(可能不是您要找的)

简短的回答,不。

更长的答案,但 TLDR,仍然没有。在大多数情况下,编译错误是不容忽视的。当然,使用未声明的参数是不能忽略的,如果你正在寻找一个不存在的函数,那么你不能在没有声明的函数名的情况下引用它。

最后,你可以像这样声明函数: void functionA() __attribute__((weak, alias("functionB")));

void functionB() { printf"Hello World\n"; }

【讨论】:

  • 感谢您的宝贵时间。如果我会这样做,如果.a 文件中不存在函数A,链接器将改为搜索函数B?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 2012-03-05
相关资源
最近更新 更多