今天在写解析TS流文件程序时,遇到了下面这个错误,但是我这两个结构体确确实实都只在一个地方定义过。
/tmp/ccKhZsdn.o:(.bss+0x0): `stPatSectionHead'被多次定义
/tmp/ccuj7nNF.o:(.bss+0x0):第一次在此定义
/tmp/cciSXU6I.o:(.bss+0x0): `stPmtSectionHead'被多次定义
/tmp/ccuj7nNF.o:(.bss+0x1a0):第一次在此定义
/tmp/ccYZ4H54.o:(.bss+0x0): `stPatSectionHead'被多次定义
/tmp/ccuj7nNF.o:(.bss+0x0):第一次在此定义
collect2: error: ld returned 1 exit status
经过试验发现是我在.h文件中定义的这两个结构体时给他们初始化。
PMT_SECTION_HEAD stPmtSectionHead = { 0 };
PAT_SECTION_HEAD stPatSectionHead = { 0 };
去掉初始化就运行正常了,.h文件中不负责任何数据的处理,具体实现还是放到.c文件中去。