0

クライアントが C++ を必要としないため、Qt (Mac) で C コンソール プロジェクトに取り組んでいます。

すべてが単一の C ファイルにあるため、すべてがうまく機能していましたが、もちろん、サイズが大きくなりすぎました。

そこで、新しい juicy_lucy.h と juicy_lucy.c ファイルを作成し、まず、いくつかのものを main.c から juicy_lucy.h に転送しました。これは次のようになります。

#ifndef JUICY_LUCY_H
#define JUICY_LUCY_H

#define command_count   14
char  *function_names[command_count] = {
                    "CLEAR_LCD", "PUT_LCD", "SET_VAR", "ADC_READ",
                    "BIT_WRITE", "BIT_READ", "BIT_WAIT",
                    "FAIL_LESS", "FAIL_MORE", "FAIL_HIGH","FAIL_LOW",
                    "AVR_PROG","AVR_READ_SERIAL","AVR_WRITE_SERIAL"
                     };
int   param_count[command_count] = {0,3,2,1,2,1,2,2,2,1,1,1,1,1};
#endif // JUICY_LUCY_H

もちろん、main.c と juicy_lucy.c の両方にヘッダーを含めます。

今私が構築するとき、私は得る

アーキテクチャ x86_64 の場合、juicy_lucy.o および main.o でシンボル _function_names が重複しています。

誰が何が間違っているのか提案できますか?

4

2 に答える 2

1

function_names を次のように宣言する必要があります。

const char* const function_names[] = ...

次に、リンクされたアプリケーションでシンボル function_names が 2 回表示されないようにする必要があります。

于 2013-06-25T09:09:53.280 に答える