【发布时间】:2020-04-30 05:12:03
【问题描述】:
我有一个包含 int 数组的头文件
primes.h
#ifndef P_H
#define P_H
#include <inttypes.h>
uint64_t primes[] = {
7,
11,
};
#endif
在lib.h 文件中:
#include "primes.h"
lib.c 包括lib.h
在main.c 文件中:
#include "lib.h"
然后它会导致错误:duplicate symbol '_primes' in:
但如果我将#include "primes.h" 移动到lib.c,它工作正常。
为什么将 include 放入源和标头中会有所作为?
【问题讨论】:
-
您的
lib.c可能还包括lib.h,对吗? -
@JonathanLeffler 我知道 extern,只是好奇为什么包含在源文件中可以使它工作。
-
那么您应该再次阅读该链接。使用
extern和放置定义的位置密切相关。
标签: c include header-files