我有这个头文件(名为ft_opp.h),我正在尝试#include两个不同的.c文件:
#ifndef __FT_OPP_H__
# define __FT_OPP_H__
t_opp gl_opptab[] = {{"-", &ft_sub}, \
{"+", &ft_add}, \
{"*", &ft_mul}, \
{"/", &ft_div}, \
{"%", &ft_mod}, \
{"", &ft_usage}};
#endif /* __FT_OPP_H__ */
我别无选择,只能更改此文件以定义gl_opptab数组(它是学校练习的一部分,我应该按原样使用此文件)。
但是,我在编译后不断从GCC收到以下消息:
重复符号_gl_opptab in: /var/folders/zz/zyxvpxvq6csfxvn_n0000hvc00046v/T//ccrPWPyP.o /var/folders/zz/zyxvpxvq6csfxvn_n0000hvc00046v/T//cc2JUzLs.o ld:1个用于体系结构x86_64的重复符号collect2:ld返回1个退出 status make: * [ft_advanced_do-op]错误1
我尝试将其包含在一个文件中,并在另一个.c文件中使用extern t_opp* gl_opptab
。但它似乎没有用。
我怎么能这样做?
答案 0 :(得分:2)
extern t_opp* gl_opptab
与标头中定义的结构数组不同。在另一个.c文件中尝试extern t_opp gl_opptab[];
。当然,另一个.c文件需要知道t_opp
是什么,所以至少还有一个标题需要包含在另一个.c文件中。