• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:multiple definitionというエラー)

multiple definitionというエラー

このQ&Aのポイント
  • Ubuntu LinuxのgccでC言語のプログラムを実行中に、multiple definitionというエラーが発生しました。
  • コンパイル時に追加したコードが原因で、実行ファイルが生成されない問題が発生しています。
  • const sig_code2_t PVC_TCP_SIG_CODE[100]の重複定義エラーが発生しており、コメントアウトすることで問題を解決できます。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

お約束の「ヘッダに実体を定義してはいけない」ってヤツです。 code.hに記述した内容はall_includes.hに適用されます。 all_includes.h内で#include "code.h"していますからね。 で、all_includes.hの内容はそれぞれ audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。 つまり、code.hに記述した内容も audio.c、comm.c、env.c、event.c、main.c、misc.c、mount.c、net.c、task.cに適用されます。 それぞれのオブジェクトファイルにPVC_TCP_SIG_CODE[100]が存在します。 リンクする段階でどのオブジェクトファイルのPVC_TCP_SIG_CODE[100]を使用したらいいのでしょうか????? というエラーです。 extern宣言して、実体をどこかのソースファイルのみに記述する。 というのが一般的な対処方法です。 # static宣言にすればとりあえずリンクは通るかもしれませんが…無駄が出ますねぇ。 # 今回はconstなので、メモリに無駄が出るだけ…で済むかと思われますが。 http://d.hatena.ne.jp/saitodevel01/20110321/1300685958

techhouse
質問者

お礼

回答頂きありがとうございます。一応、エラーを回避することができました。とりあえずこれで進めて見ます。助かりました。

すると、全ての回答が全文表示されます。

関連するQ&A