c - C中的重复符号错误

标签 c duplicate-symbol

我有以下代码布局

header.h

#ifndef _header_h
#define _header_h
void empty(float *array, int l)
{
    int i;
    for (i=1 ; i<=l ; i++)
    {
        array[i]=0;
    }

}

#endif

还有两个文件(我们称它们为 file1.c 和 file2.c)

#include "header.h"

void function/*1 or 2*/(){

     ....
     empty(a,b);
     ....
}

所以编译工作正常,但链接器命令失败,因为编译器说存在重复的函数定义。如何在仍然使用头文件的情况下避免这种情况?当我只在 header 中定义函数并创建另一个包含完整函数的 .c 文件时,它工作正常。我一直认为在标题中声明它是要走的路。

最佳答案

I always thought declaring it in the header is the way to go.

是的,是的。 在标题中声明 没问题。但是,在标题中定义它没有任何好处。 (除非它是 static inline,但这些天你可能不想这样做。)

关于c - C中的重复符号错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24144297/

相关文章:

reactjs - v-for 在 react 中的等价物是什么?

ios - ld:架构 armv7 Xcode 项目的 xx 重复符号

c - C中的重复符号错误

在循环控制条件内调用 void 函数

c - 如何告诉 `getchar()` 回到缓冲区的开头?

c++ - 解释 Valgrind 的 trace-malloc 输出

c++ - C header 的重复符号问题

c - 如何访问整数形式的字节

java - 指向作为 JNA 方法参数的结构数组的指针

c++ - 带有自定义谓词的 unordered_set 使链接器错误(重复符号)