0

手短に言うと、これは現在起こっていることであり、今日まで私に起こったことはありません。

  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
4

1 に答える 1

2

function の 2 つの定義がありbit_to_ascii(char const*, char*)、1 つは assn1m.c にあり、もう 1 つは segment.cpp にあります。これは多くの場合、それをヘッダー ファイルで定義せずinlineに、複数のソース ファイルに含めることによって発生します。

C99 では、inline指定子の動作が C++ とは少し異なることに注意してください。extern inline適切に機能させるために、定義する必要がある場合があります。

また、プログラムのエントリポイントのどこにも関数を定義していないか、関数が定義mainされているオブジェクトファイルにリンクしていませんが、これは複数定義エラーとは別の問題です。

于 2012-07-13T22:34:57.393 に答える