C语言 弱函数作为静态函数的实现

zpgglvta  于 2023-04-05  发布在  其他
关注(0)|答案(1)|浏览(173)

如果我以这种方式将函数实现为弱函数,例如:
a.h:

int func1();

交流:

#include "a.h"
__attribute__((weak)) int func1() {
  ...
}

是否可以在另一个文件中实现此函数,例如X. c作为静态函数?例如:

#include "a.h"
static int func1(void) {   <<----------- error
  ...
}

我试着去做,但我得到了这个错误:

error: static declaration of `func1` follows non-static declaration

但是我不知道为什么我不能这样做..毕竟,这是一个静态函数,只在X.c文件中..

vwkv1x7d

vwkv1x7d1#

您将.h文件包含在函数func1的一些原型中
然后你尝试在包含该定义的文件中定义它。定义和声明不匹配。编译器不知道使用哪一个,它正在抱怨它。你需要有相同的原型和定义-否则,它会失败。

相关问题