可能不是那么经典的gcc / g ++文件错误

时间:2012-07-13 22:30:55

标签: c++ gcc g++

简短而甜蜜,这种情况现在正在发生,而且在今天之前从未发生过:

  g++ assn1m.c segment.cpp
/tmp/cc2yUKRO.o: In function `bit_to_ascii(char const*, char*)':
segment.cpp:(.text+0x0): multiple definition of `bit_to_ascii(char const*, char*)'
/tmp/cc2Xgj7t.o:assn1m.c:(.text+0x0): first defined here
/usr/lib/gcc/i586-suse-linux/4.4/../../../crt1.o: In function `_start':
/usr/src/packages/BUILD/glibc-2.10.1/csu/../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status

1 个答案:

答案 0 :(得分:2)

您有两个函数bit_to_ascii(char const*, char*)的定义,其中一个在assn1m.c中,另一个在segment.cpp中。这通常是由于在没有inline的头文件中定义它并将其包含在多个源文件中引起的。

请注意,在C99中,inline说明符的工作方式与C ++略有不同。您可能必须将其定义为extern inline才能使其正常工作。

您也没有为程序的入口点定义main函数,或者您没有在定义它的目标文件中进行链接,尽管这是与多个定义错误的单独问题。