c - 强制另一个文件定义一个函数

标签 c

假设我有 3 个单独的文件:ma​​in.ctest.ctest.h。我如何“强制”包含 test.h 的函数来定义一个已经在 test.h 中声明的函数,即 test.c> 文件可以调用它。

这有点乱,所以让我给你一些代码示例来说明我的意思。

测试.h:

...
#define SOMETHING
...
#ifdef SOMETHING
inline void test_func(BYTE b);
#endif
...

测试.c:

#include "test.h"

void somefunction(void) 
{
    ...
    #ifdef SOMETHING
    test_func(integer_value);
    #endif
    ...        
}

ma​​in.c:

#include "test.h"

int main(void)
{
    ...
}
inline void test_func(BYTE b)
{
    // Do something with b
}

简而言之:test.h 声明了一个函数,ma​​in.c 定义了该函数,test.c 调用了该函数。

这可能吗?怎么办?

编辑:

用户在 ma​​in.c 中声明函数,当编译器给出错误或未声明函数时。

最佳答案

简而言之,应该可以做到这一点。 为什么 ?实现函数的文件不必位于同名的头文件中。 链接器将解决任何问题(如果有)并在缺少某些内容时提出投诉。 如果编译器报错,则说明缺少头文件或您的头文件函数定义与您在 c 文件中的定义不匹配。

关于c - 强制另一个文件定义一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592028/

相关文章:

objective-c - 在 Objective-C 中在后台运行 C 函数

c - - 5%3 怎么等于 - 2?

c++ - 用标准 C 或 C++ 编写的解释器

c - Pthreads 程序有时会产生错误的输出和正确的输出

在 MEX 中创建稀疏矩阵

C循环: Why doesn't this work?的缓存优化

c - 在 C 中循环以递增值

c - 将文本文件读入 2 个单独的字符数组(在 C 中)

c - 在 ubuntu 上使用 berkeleydb - 找不到 db 库

c - STM32外部中断只在 Debug模式下响应