0

fileA.c 有一个静态函数 (static int funcA())

无法修改 fileA.c。

fileB.c 如何使用 funcA()?

4

2 回答 2

1

一般来说,你不能,这就是static本案的全部意义所在。

也许fileA.c有办法获取函数的地址,然后你可以用它来进行调用,但你不能static直接引用符号。

对于测试代码,经常使用的一个“技巧”是#include测试文件中的 C 文件,因此fileA_test.c您将拥有:

#include "fileA.c"

bool test_fileA_something(void)
{
  TEST_ASSERT(foo() == 42);
}

上面假设这foo是一个static内部函数fileA.c,并且由于文件是一起编译的,所以这是有效的。

于 2017-05-16T09:21:11.940 回答
0

不是。编译器完全有权不包含funcA在 fileA.obj 中。即使它被包含在内,它也可能不是链接器可以使用的形式。事实上,如果包含它,它必须以不与其他函数名称冲突的方式funcA

于 2017-05-16T09:22:11.097 回答